假設我有以下檔案:
[
{
"order_id": 1,
"user_id": 1001,
"refund_id": 123
},
{
"order_id": 2,
"user_id": 1002
},
{
"order_id": 3,
"user_id": 1001
},
{
"order_id": 4,
"user_id": 1001
},
{
"order_id": 5,
"user_id": 1003,
"refund_id": 111
}
]
對于給定"refund_id": 123,我得到用戶 1001,并且我想回傳用戶 1001 的所有訂單(訂單 1、3、4)SQL 等價物類似于
SELECT * from orders where user_id in (select user_id from orders where refund_id = 123);
uj5u.com熱心網友回復:
這是您可以做到的一種方法。
db.collection.aggregate([
{
"$match": {
"refund_id": 123
}
},
{
"$lookup": {
"from": "collection",
"localField": "user_id",
"foreignField": "user_id",
"as": "orders"
}
}
])
示例輸出:
[
{
"_id": ObjectId("5a934e000102030405000000"),
"order_id": 1,
"orders": [
{
"_id": ObjectId("5a934e000102030405000000"),
"order_id": 1,
"refund_id": 123,
"user_id": 1001
},
{
"_id": ObjectId("5a934e000102030405000002"),
"order_id": 3,
"user_id": 1001
},
{
"_id": ObjectId("5a934e000102030405000003"),
"order_id": 4,
"user_id": 1001
}
],
"refund_id": 123,
"user_id": 1001
}
]
在mongoplayground.net上試試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/504153.html
上一篇:將新專案推入陣列到mongo檔案
