例子: Mongo db collection:
[
{
"user_id": 1,
"lead_id": 901,
...
...
},
{
"user_id": 2,
"lead_id": 902,
...
...
},
{
"user_id": 2,
"lead_id": 903,
...
...
},
{
"user_id": 3,
"lead_id": 999,
...
...
},
]
我有一個物件陣列:
const reqArr = [
{
"user_id": 1,
"lead_id": 901,
},
{
"user_id": 2,
"lead_id": 999,
}
]
我想基于這兩者來查詢資料庫user_id并存lead_id在于陣列中的每個物件中reqArr。像這樣的東西或聚合管道
Model.find(reqArr)
我想要的輸出是這樣的:
[{
"user_id": 1,
"lead_id": 901,
...
...
}]
我只知道如何基于一個欄位的陣列進行查詢,例如Model.find({_id: {"$in": [array of ids ]}})物件陣列中的多個欄位,但不知道。有什么想法或解決方法可以實作上述輸出或否定上述輸出?我只需要reqArrdb 集合中存在哪些物件,哪些不存在。謝謝你。
uj5u.com熱心網友回復:
簡單的 $or
db.collection.aggregate([
{
"$match": {
"$or": [
{
"user_id": 1,
"lead_id": 901
},
{
"user_id": 2,
"lead_id": 902
}
]
}
}
])
mongoplayground
節點
const reqArr = [
{
"user_id": 1,
"lead_id": 901,
},
{
"user_id": 2,
"lead_id": 999,
}
]
Model.find({ "$or": reqArr})
uj5u.com熱心網友回復:
執行上述操作的最簡單方法是:
const results = await Promise.all(reqArr.map(req => {
const { user_id, lead_id } = req;
return Model.findOne({ user_id, lead_id });
}));
我們映射reqArr. 對于每個專案 ( req),我們將其分解為兩個變數user_id和lead_id。
然后我們查詢單個檔案(我假設每個user_id和lead_id對只有一個檔案,否則需要稍微調整。
然后我們回傳findOne承諾,產生一系列承諾,我們將其傳入Promise.all以異步等待它們。
這應該會產生lead_iq與user_id.reqArr
如果其中一些組合不存在于資料庫中,則陣列的這些元素將存在undefined,您可以繼續處理這些組合,但您需要。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/418422.html
標籤:
上一篇:用nvm安裝最新的偶數節點?
