我有 2 个模型希望能够在猫鼬中执行查询。
模型用户
import mongoose from 'mongoose'
const Schema = mongoose.Schema
let csvuaSchema = new Schema({
codigo: { type: 'String' },
georeferencia: { type: 'String'},
tipo: { type: 'String' }
})
let csvua = mongoose.model('csvua', csvuaSchema)
export default csvua
模型读数
import mongoose from 'mongoose'
const Schema = mongoose.Schema
let csvlecSchema = new Schema({
codigo: { type: 'String', ref: 'csvuas'},
fecha_lectura: { type: 'Date' },
lectura: { type: 'Number' }
})
let csvlec = mongoose.model('csvlec', csvlecSchema)
export default csvlec
我从csv文件中获取信息并将其批量上传到mongodb,我需要能够通过用户代码查询用户的所有读数。我可以使用用户代码进行查询以获取用户的所有读取,还是有必要使用用户的 _id?我不想使用 mongoose 为用户生成的 _id,因为尝试批量添加读取必须使用您的代码查询用户的 _id,我认为这对于性能来说并不理想。
您可以在再次插入文档时更改 ObjectId,例如,
user.insert({_id:"pepe",apellido:"Lopez"})
这样它会插入您需要的 ObjectId,但请注意它必须是唯一的。现在,根据我的经验,对我来说最好的事情是使用 MongoDB 在插入文档时创建的 ObjectId,因为它确保它是唯一的,此外,您自己相关的搜索ObjectId 更有效更快。
如果您的问题是集合的关系,您可以在 MongoDB 的 '$lookup' 阶段使用 'aggregate()' 进程(如果您从 MongoDB 的 3.2 或更高版本中获得它),您可以在其中关联您的字段的集合需要并返回相关数据。我会给你一个例子,这样你就可以得到一个想法:
离开:
更多信息:https ://docs.mongodb.com/manual/reference/operator/aggregation/lookup/index.html
关于搜索性能,我建议您在集合中包含一个索引,这将对您的搜索有很大帮助,如果您必须提取许多文档,则更是如此。(https://docs.mongodb.com/manual/indexes/index.html)
我现在不能测试它,但理论上你可以,你应该确保 id 是唯一的(使用索引和用户唯一)