我正在使用Morphia访问mongoDB。 我需要按内部数组的长度获取对象列表。 有没有人知道如何在不将所有集合转换为Java并将其排序的情况下完成它?
答案 0 :(得分:4)
您应该使用嵌套数组大小创建额外字段,并使用$inc更新此字段。
你也可以使用$where,但速度很慢。
您可以按照以下嵌套数组长度进行搜索:
db.coll.find({ $where: "this.nestedArray.length > 3" });
但正如我说更好地创造一个额外的领域。
答案 1 :(得分:3)
好的我找到了: - )
dataStore.find(MyClass.class).order("-inner_array.length").asList();
诀窍。
答案 2 :(得分:0)
例如:
源数据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}}])