我有這個 json 檔案
{
"_id": "1",
"name": "sanggiyo",
"gender": "Male",
"children": [
{
"name": "tono",
"gender": "Male",
"children": [],
"_id": "2"
},
{
"name": "rin",
"gender": "Female",
"children": [],
"_id": "3"
}
],
"createdAt": "2022-04-17T11:14:00.648Z",
"updatedAt": "2022-04-17T11:14:16.277Z",
"__v": 0
}
我想讓 children._id 使用
Person.find( {$or: [ { "_id" : id }, { "children._id" : ObjectId(id) } ]} )
如果我使用 1 的 id,我應該得到所有檔案。但是如果我使用 2 的 id,我應該只得到沒有 id 1 的孩子物件,有沒有辦法做到這一點?
uj5u.com熱心網友回復:
您可以嘗試使用聚合框架,但在 mongo 查詢回傳類似于以下內容之后的代碼中,更具可讀性和可維護性的方法是:
const persons = await Person.find({$or: [ { "_id" : id }, { "children._id" : ObjectId(id) } ]});
const result = persons.flatMap(p => [p, ...p.children]).find(p => p._id === id);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/460144.html
標籤:javascript mongodb 猫鼬
上一篇:updateOne不會更新多個欄位,也不會在記錄中創建新欄位
下一篇:mongoose中的finOne()失敗并出現MongoServerError:Expectedfieldcollat??iontobeoftypeobject
