我正在使用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. 如何根據參數值對查詢結果進行分組
- 2. Android對sqlite查詢結果進行排序忽略大小寫
- 3. 如何根據OR結果的數量對SQL查詢進行排序
- 4. 如何根據需要對這個MySQL查詢的結果進行排序?
- 5. 根據月份對數據庫結果對象(數組)進行排序
- 6. 根據內部數組上的對象的屬性對數組進行排序
- 7. MongoDB - 對查詢進行兩次排序?
- 8. 如何根據ElasticSearch中的viewing_timestamp對桶結果進行排序?
- 9. 如何根據另一個數組對數組進行排序?
- 10. Spring數據Mongodb排序內部數組
- 11. 如何使用LDAP查詢對LDAP結果進行排序?
- 12. 如何在php中對查詢結果進行排序?
- 13. 如何對IndexedDB查詢的結果進行排序?
- 14. 如何對多個查詢的結果進行排序?
- 15. 如何根據查詢結果的日期字段進行排序?
- 16. 根據用戶查詢對結果進行排序的簡單評級算法
- 17. 根據grails中的父屬性對查詢結果進行排序
- 18. 如何根據對象的屬性對數組進行排序?
- 19. 如何根據特定的外部值對MySQL結果進行排序?
- 20. Solr - 根據方面計數對搜索結果進行排序
- 21. 如何根據Swift中的數組內容對字典數組進行排序
- 22. 如何根據分組變量對ggplot中的結果進行排序
- 23. 如何根據主陣列內長度數組進行排序
- 24. 根據價格對Mongodb數據進行排序
- 25. 如何使用MongoEngine對MongoDB結果進行排序?
- 26. 根據字段之間的最大改進對mongo進行排序結果
- 27. Laravel如何根據數組索引對集合進行排序
- 28. 如何根據列值對numpy數組進行排序?
- 29. 如何根據notif_date_sort對這個多維數組進行排序?
- 30. 如何根據匹配結果對此Excel表格進行排序和排列?
我很確定這個查詢實際上不工作。它可以執行而不會給出錯誤,但是當我在mongo shell中嘗試類似的東西時,實際上沒有任何排序。 – 2014-04-09 13:28:46
不起作用... – Antoine 2016-03-29 00:44:09