我有以下数据结构:
{
'url' : 'www.example.com',
'title' : 'This is a title',
'data' : [
[{'name': 'abcdefg'}, {'nmr': 'hijklmnop'}],
[{'name': 'hijklmnop'}, {'nmr': 'abcdefg'}]
]
},
{
'url' : 'www.example_2.com',
'title' : 'This is a title_2',
'data' : [
[{'name': 'abcdefg'}, {'nmr': 'hijklmnop'}],
[{'name': 'hijklmnop'}, {'nmr': 'abcdefg'}],
[{'name': 'abcdefg'}, {'nmr': 'hijklmnop'}]
]
}
我需要排序' url' (降序)根据'数据'中的名称总数。我希望看到这样的事情:
www.example_2.com:3
www.example.com:2
非常感谢任何帮助。
答案 0 :(得分:1)
您可以使用aggregate
中的$size
运算符来访问数组字段的大小,然后使用$sort
。
在shell中:
db.test.aggregate([
{$project: {url: 1, count: {$size: '$data'}}},
{$sort: {count: -1}}
])
<强>输出强>
{
"result" : [
{
"_id" : ObjectId("53dadaf8393fa0461f92333c"),
"url" : "www.example_2.com",
"count" : 3
},
{
"_id" : ObjectId("53dadaf8393fa0461f92333b"),
"url" : "www.example.com",
"count" : 2
}
],
"ok" : 1
}