我正在使用Morphia访问mongoDB。 我需要通过内部数组的长度来获取对象列表。 有没有人有一个想法如何做到这一点,而不需要把所有的集合到Java并在那里排序呢?如何根据内部数组大小对MongoDB查询结果进行排序?
回答
OK,我发现它:-)
dataStore.find(MyClass.class).order("-inner_array.length").asList();
的伎俩。
您应该创建嵌套数组大小的额外字段并使用$inc更新此字段。
你也可以使用$where,但它很慢。
您搜索的嵌套数组长度是这样的:
db.coll.find({ $where: "this.nestedArray.length > 3" });
但正如我所说更好地创建一个额外的字段。
感谢安德鲁,但是这不是我要找的。我使用Morphia作为POJO映射器,所以我不想添加不相关的字段。以任何方式,所有的JavaScript数组都有一个length属性。我想知道是否有方法在查询中使用它。 – tsinik 2011-04-23 21:18:23
不,没有办法做到这一点;不支持按函数排序,也不存在数组长度的合成域。这意味着现在你需要存储一个计数,如果你想嵌入它并对其进行排序。小心你如何更新它。 – 2011-04-24 01:45:11
例如:
源数据tmb_results_by_tissue_other:
{"base_info":[1,2,3],"type":"123"},
{"base_info":[2,3,4,5],"type":"123"},
由骨料
db.tmb_results_by_tissue_other.aggregate([{$project:{"type":1, num:{$size:"$base_info"}}},{$sort:{"num":-1}}])
- 1. 如何根据mongoDB中的函数结果对查询结果进行排序
- 2. 如何根据一列对查询结果进行排序?
- 3. 如何根据子文档对mongodb查询结果进行排序
- 4. 如何根据参数值对查询结果进行分组
- 5. Android对sqlite查询结果进行排序忽略大小写
- 6. 如何根据OR结果的数量对SQL查询进行排序
- 7. 如何对LINQ查询分组结果进行排序
- 8. 如何根据JavaScript中的大小对较大的数组进行排序?
- 9. 如何根据需要对这个MySQL查询的结果进行排序?
- 10. Sequelize.js:如何根据关闭中的值对查询结果进行排序?
- 11. 根据月份对数据库结果对象(数组)进行排序
- 12. 根据内部数组上的对象的属性对数组进行排序
- 13. 如何根据ElasticSearch中的viewing_timestamp对桶结果进行排序?
- 14. MongoDB - 对查询进行两次排序?
- 15. 如何根据另一个数组对数组进行排序?
- 16. 如何根据输入数组对数组进行排序?
- 17. 如何根据聚合对大熊猫组进行排序
- 18. 根据行中的结果对数据表中的组排序
- 19. 如何按小时对mysql查询结果进行分组?
- 20. Spring数据Mongodb排序内部数组
- 21. 如何在php中对查询结果进行排序?
- 22. 如何对IndexedDB查询的结果进行排序?
- 23. 如何对多个查询的结果进行排序?
- 24. 如何使用LDAP查询对LDAP结果进行排序?
- 25. 如何根据查询结果的日期字段进行排序?
- 26. 如何根据对象的属性对数组进行排序?
- 27. 根据grails中的父属性对查询结果进行排序
- 28. 根据用户查询对结果进行排序的简单评级算法
- 29. 如何根据特定的外部值对MySQL结果进行排序?
- 30. 如何根据Swift中的数组内容对字典数组进行排序
我很确定这个查询实际上不工作。它可以执行而不会给出错误,但是当我在mongo shell中尝试类似的东西时,实际上没有任何排序。 – 2014-04-09 13:28:46
不起作用... – Antoine 2016-03-29 00:44:09