【发布时间】:2010-12-15 17:11:42
【问题描述】:
是否可以按嵌套数组的大小对 MongoDB 集合进行排序?例如,我们有一组问题文档,每个文档都有一个嵌套的答案数组。我希望能够对集合进行排序并找出回答最多的问题?我一直在环顾四周,我不确定它是否可以直接从 MongoDB 执行,我认为提取所有问题然后在 Java 中对它们进行排序会非常耗费性能。
【问题讨论】:
是否可以按嵌套数组的大小对 MongoDB 集合进行排序?例如,我们有一组问题文档,每个文档都有一个嵌套的答案数组。我希望能够对集合进行排序并找出回答最多的问题?我一直在环顾四周,我不确定它是否可以直接从 MongoDB 执行,我认为提取所有问题然后在 Java 中对它们进行排序会非常耗费性能。
【问题讨论】:
您不能按嵌套集合的大小进行查询,您需要创建具有集合大小的字段以满足此类需求(mongo db documentation):
$size 运算符匹配任何数组 具有指定数量的元素。 以下示例将匹配 对象 {a:["foo"]},因为该数组 只有一个元素:
db.things.find( { a : { $size: 1 } } );
您不能使用 $size 来查找范围 大小(例如:数组 超过 1 个元素)。如果你需要 查询一个范围,创建一个额外的 当您增加时的大小字段 添加元素。
【讨论】: