dha*_*ran 7 mongodb mongodb-query aggregation-framework
当我尝试在 mongo db 中加入时,$lookup 返回空数组。
我有两个集合,一个是 user_information,另一个是 add_to_cart。我想在 user_information 中使用 user_id 获取用户表单 add_to_cart 集合的 add_to_cart 详细信息。
添加到购物车集合:
[
{
"_id": {
"$id": "592ec12b744a12d014000031"
},
"order_id": "592ec125744a12d014000030",
"table_id": 1,
"category_name": "veg",
"food_id": "5923c8bc744a12441e000031",
"user_id": "592ec125744a12d01400002f",
"food_name": "Cream Of Mushroom Soup",
"food_per_price": "100",
"food_total_price": 100,
"food_qty": 1,
"active_status": 0,
"created_at": {
"sec": 1496236331,
"usec": 0
},
"updated_at": {
"sec": 1496236331,
"usec": 0
}
},
{
"_id": {
"$id": "592ec12e744a12d014000032"
},
"order_id": "592ec125744a12d014000030",
"table_id": 1,
"category_name": "veg",
"food_id": "5923c8cb744a12441e000033",
"user_id": "592ec125744a12d01400002f",
"food_name": "Cream Of Mushroom Soup",
"food_per_price": "100",
"food_total_price": 100,
"food_qty": 1,
"active_status": 0,
"created_at": {
"sec": 1496236334,
"usec": 0
},
"updated_at": {
"sec": 1496236334,
"usec": 0
}
}
]
Run Code Online (Sandbox Code Playgroud)
用户信息收集:
[
{
"_id": {
"$id": "592ec125744a12d01400002f"
},
"branch_id": 1,
"brand_id": 1,
"business_id": 1,
"table_id": 1,
"uid": "116907438816775509716",
"user_name": "dhamo dharan",
"user_email": "dhamursv@gmail.com",
"user_provider": "google",
"user_image": "https://lh5.googleusercontent.com/-Masl6FTlG_g/AAAAAAAAAAI/AAAAAAAAAEo/UV3oTjMnqzQ/s96-c/photo.jpg",
"active_status": 0,
"created_at": {
"sec": 1496236325,
"usec": 0
},
"updated_at": {
"sec": 1496236325,
"usec": 0
}
}
]
Run Code Online (Sandbox Code Playgroud)
我的数据库查询
db.add_to_cart.aggregate([
{ "$match": { "user_id": "592ec125744a12d01400002f" } },
{ "$sort": { "created_at": -1 } },
{ "$limit": 20 },
{ "$lookup": {
"from": "user_information",
"localField": "user_id",
"foreignField": "_id",
"as": "userinfo"
} },
{ "$unwind": "$userinfo" },
{ "$project": {
"food_name": 1,
"food_qty": 1,
"userinfo.user_name": 1,
"userinfo.user_email": 1
} }
])
Run Code Online (Sandbox Code Playgroud)
它将返回空结果,我不知道出了什么问题。提前致谢!
在简单的话 - 您的匹配查询是错误的。
因为 "user_id": "592ec125744a12d01400002f" 是一个 "string" ,所以匹配与字符串 ObjectId 的普通查找查询一起工作正常
但是当我们谈论聚合时,你不能直接给出字符串..你总是给出 mongoose.Types.ObjectId(userId) ,其中 userId 是字符串
var userId="592ec125744a12d01400002f";
db.add_to_cart.aggregate([
{ "$match": { "user_id": mongoose.Types.ObjectId(userId) } },
{ "$sort": { "created_at": -1 } },
{ "$limit": 20 },
{ "$lookup": {
"from": "user_information",
"localField": "user_id",
"foreignField": "_id",
"as": "userinfo"
} },
{ "$unwind": "$userinfo" },
{ "$project": {
"food_name": 1,
"food_qty": 1,
"userinfo.user_name": 1,
"userinfo.user_email": 1
} }
])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5306 次 |
最近记录: |