【发布时间】:2018-01-06 05:38:57
【问题描述】:
我正在编写一个简单的查询来返回用户内容/帖子。 我还需要显示每个帖子的 cmets 数量。
我的文档结构是这样的
posts {
content: string,
comments: [array of object ids]
...
}
我知道如何使用聚合函数获取 cmets 数组的大小。 我也知道我可以添加一个“cmetsNr”属性并使用保存后挂钩来增加它。 而且...我知道我可以执行查询...返回帖子数组,并使用 post.cmets.length 属性,但我不想只返回整个 cmets 数组数一数。
我的所有查询都非常简单,我不想让它们变得过于复杂。 因此,我正在寻找一种将 cmets 数组的长度作为新字段返回的方法,即使用投影或类似的方法。
有没有办法使用简单的查找查询来获取文档数组的长度,而不返回数组本身?
【问题讨论】:
-
为什么不使用聚合然后 $size ?
-
我认为调用聚合框架只是为了返回像数组长度属性这样基本的东西似乎有点矫枉过正。不必要的复杂程度,并且性能也有所降低。如果有一种方法可以在简单的查找查询中获取数组的长度,那么我更愿意这样做。即 Posts.find({_id: some id}, {cmetsNr: "$cmets.length" } ) 或 Posts.find({_id: some id}, {cmetsNr: {$size: 'cmets'} } )跨度>
标签: javascript mongodb mongoose nosql