我想在mongodb中的查询中返回嵌入式集合的计数。
假设我有一个名为profiles的集合
var ProfileSchema = new Schema({
uname: {
type: String,
required: true,
index: true,
unique: true
},
fname: String,
lname: String,
posts: [ObjectId]
});
如何查询它以便选择uname,frame,lame,posts.length?我不想通过网络返回帖子集合,因为用户可以有数百个帖子。我是否应该在配置文件架构中嵌入post id?也许我应该摆脱它,因为已经为帖子定义了另一个集合,所以我基本上使用Profile.posts作为外键的嵌入式集合。
答案 0 :(得分:5)
请参阅Mongo docs对$ size operator here的讨论。
简而言之,您可以使用$ size运算符基于确切的数组大小进行查询,但是您无法获取数组大小,也无法根据数组大小范围进行查询。
建议对您有用 - 保留另一个字段,即帖子数 - 可以在查询中用作过滤器/范围,当您需要知道数组有多大时,可以返回它。无论帖子是存储在别处还是嵌入在数组中,如果您根据帖子数量进行查询或过滤,此字段将非常有用。
有一个非常similar question有类似的建议。