5

我正在使用 Morphia 访问 mongoDB。我需要通过内部数组的长度获取对象列表。有没有人知道如何在不将所有集合到 Java 并在那里对其进行排序的情况下完成它?

4

3 回答 3

4

您应该创建具有嵌套数组大小的额外字段并使用$inc来更新此字段。

您也可以使用$where,但速度很慢。

您可以像这样按嵌套数组长度搜索:

db.coll.find({ $where: "this.nestedArray.length > 3" });

但正如我所说的更好地创建一个额外的字段。

于 2011-04-23T20:06:28.393 回答
3

好的,我找到了:-)

dataStore.find(MyClass.class).order("-inner_array.length").asList();
成功了。

于 2011-04-24T12:14:43.850 回答
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}}])
于 2017-08-16T08:36:33.247 回答