我正在使用NodeJS和Mongoose。我有一个集合'user',其架构如下:
id: String
name: String
surname: String,
otherField1: Number,
otherFieldN: String,
arrayField: [String],
messages:[
{
date: SchemaTypes.Long,
id: String,
type: String,
content: String
}
],
status:String
我确切地说,在第二种情况下(更多查询),根据第一次查询的结果将改变后续查询所需的字段
答案 0 :(得分:0)
我认为您应该根据函数需要查询有关用户的信息。 这样你就不需要在本地保存东西。
答案 1 :(得分:0)
从MongoDB的角度来看,性能没有区别:
在.select({fields you need})
链接或不链接的情况下,您将获得相同数量的文档,因为它是重要查找中的查询(有关如何在mongodb中分析查询的详细信息,请参阅Explain command )。
要提高Mongo的效果,您需要在您最常用的字段或最终create an index的集合中shard among instances {。}}。
您的案例中的重大影响是在节点内存方面:如果您在不久的将来不需要其他字段,建议使用select
;当然,如果您需要在其他字段之后重新查询数据库,那么有意义的是不使用select,而是将整个用户对象保留在第一位。
注意:强>
从Mongoose 4.0+开始,您可以避免明确使用select
命令like so。