我正在使用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