我想从所有个体user_obj
(即1,2,3)中选择前3行,然后最后对它们进行分组并按最大计数进行排序。
文件样本
{
"_id" : ObjectId("5936986f6b5f90330f8e34ba"),
"factual_id" : "7b758ba0-1e18-012f-0643-0030487f54d8",
"user_obj" : 1,
"name" : "Buckhorn Bar",
"address" : "105 S MAIN St",
"address_extended" : null,
"po_box" : "P.O. Box 115",
"locality" : "Viborg",
"region" : "SD",
"post_town" : null,
"admin_region" : null,
"postcode" : NumberLong("57070"),
"country" : "us",
"tel" : "(605) 766-0086",
"fax" : null,
"latitude" : 43.170177,
"longitude" : -97.081538,
"neighborhood" : null,
"website" : null,
"email" : null,
"category_ids" : [
NumberLong("347"),
NumberLong("312")
],
"category_labels" : [
[
"Social",
"Food and Dining",
"Restaurants"
],
[
"Social",
"Bars"
]
],
"chain_name" : null,
"chain_id" : null,
"hours" : null,
"hours_display" : null,
"existence" : 0.7,
"cuisine" : [
"Pub Food"
]
},
/* 2 createdAt:6/6/2017, 5:26:31 PM*/
{
"_id" : ObjectId("5936986f6b5f90330f8e34bb"),
"factual_id" : "7b8a33b9-9ca9-4068-b711-012a77d016a4",
"user_obj" : 3,
"name" : "Retro Bean",
"address" : "10606 Sales Rd S",
"address_extended" : null,
"po_box" : null,
"locality" : "Tacoma",
"region" : "WA",
"post_town" : null,
"admin_region" : null,
"postcode" : NumberLong("98444"),
"country" : "us",
"tel" : "(253) 267-0272",
"fax" : null,
"latitude" : 47.160925,
"longitude" : -122.46548,
"neighborhood" : null,
"website" : null,
"email" : null,
"category_ids" : [
NumberLong("342")
],
"category_labels" : [
[
"Social",
"Food and Dining",
"Cafes, Coffee and Tea Houses"
]
],
"cuisine" : [
"Tea"
],
}
....更多文档在这里
目前我正在做的事情
db.restaurant.find([
{
$match: {
user_obj:{
$in:[1,2,3]
},
cuisine:{$ne: ["",null]}
}
},
{$unwind: "$cuisine"},
{
$group:{
_id:"$cuisine",count:{$sum:1}
}
},
{$sort:{count:-1}},
{$limit:3}
])
因此,查询应该为user_obj
1找到前3种菜肴,然后为user_obj
2找到前3种菜肴然后user_obj
3
上述查询一次只能使用一个user_obj
,但必须使用多个user_obj
。由于我是这项技术的新手,所以我需要帮助来修改此查询以获得具有多个ID的响应