查询返回mongodb嵌入式集合中的项目计数

时间:2012-06-03 12:35:14

标签: mongodb

我想在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作为外键的嵌入式集合。

1 个答案:

答案 0 :(得分:5)

请参阅Mongo docs对$ size operator here的讨论。

简而言之,您可以使用$ size运算符基于确切的数组大小进行查询,但是您无法获取数组大小,也无法根据数组大小范围进行查询。

建议对您有用 - 保留另一个字段,即帖子数 - 可以在查询中用作过滤器/范围,当您需要知道数组有多大时,可以返回它。无论帖子是存储在别处还是嵌入在数组中,如果您根据帖子数量进行查询或过滤,此字段将非常有用。

有一个非常similar question有类似的建议。