我有一個如下的用戶檔案,其中包含一個 systemID 陣列,對于另一個將 systemID 保存為 unikey 鍵的集合來說,它是唯一的。如何使用所有系統 ID 詳細資訊填充用戶?
用戶檔案:
{
"_id" : ObjectId("6gfg85993266db5fdgs578"),
"email" : "[email protected]",
"role" : "user",
"systemIDs" : [
"12345678",
"87654321"
],
"createdAt" : ISODate("2022-02-13T16:31:34.119 0000"),
"updatedAt" : ISODate("2022-02-13T16:31:34.119 0000"),
"__v" : NumberInt(0)
},
{
"_id" : ObjectId("6gfg85993266db5fdgs578"),
"email" : "[email protected]",
"role" : "user",
"systemIDs" : [
"1111111",
"2135684"
],
"createdAt" : ISODate("2022-02-13T16:31:34.119 0000"),
"updatedAt" : ISODate("2022-02-13T16:31:34.119 0000"),
"__v" : NumberInt(0)
}
系統 ID 檔案:
{
"_id" : ObjectId("62093fdsfsdfs97e1"),
"systemID" : "12345678",
"err" : [
1, 5, 10
],
"__v" : NumberInt(0)
},
{
"_id" : ObjectId("62093fdsfsdfs97e1"),
"systemID" : "87654321",
"err" : [
3, 7
],
"__v" : NumberInt(0)
},
{
"_id" : ObjectId("62087dsfsdfs97e1"),
"systemID" : "11111111",
"err" : [
],
"__v" : NumberInt(0)
},
我想找到用戶持有的所有 systemID 的詳細資訊,如果我使用電子郵件查詢我的用戶集合:[email protected],我應該得到以下結果或填充結果,如下所示:
{
"_id" : ObjectId("6gfg85993266db5fdgs578"),
"email" : "[email protected]",
"role" : "user",
"systemIDs" : [
{
"_id" : ObjectId("62093fdsfsdfs97e1"),
"systemID" : "12345678",
"err" : [
1, 5, 10
],
"__v" : NumberInt(0)
},
{
"_id" : ObjectId("62093fdsfsdfs97e1"),
"systemID" : "87654321",
"err" : [
3, 7
],
"__v" : NumberInt(0)
},
]
"createdAt" : ISODate("2022-02-13T16:31:34.119 0000"),
"updatedAt" : ISODate("2022-02-13T16:31:34.119 0000"),
"__v" : NumberInt(0)
},
我可以創建一個 foreach 回圈并每次呼叫資料庫,但我認為這不是一個好習慣。我是新手,所以請耐心等待并向我詳細解釋。
uj5u.com熱心網友回復:
您可以將聚合與$matchand一起使用$lookup來執行此任務
db.users.aggregate([
{
"$match": {
"email": "[email protected]"
}
},
{
"$lookup": {
"from": "systems",
"localField": "systemIDs",
"foreignField": "systemID",
"as": "systemIDs"
}
}
])
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/423993.html
標籤:javascript 节点.js mongodb 猫鼬
