我有一個問題:
如何使用 mongoose 在陣列中找到所有包含字串的檔案?
例如,我的檔案:
<Model>.findMany(/* code that i need */).exec() // return all documents that have an array called "tags" that includes tag "test"
{
"_id": {
"$oid": "61b129b7dd0906ad4a2efb74"
},
"id": "843104500713127946",
"description": "Server di prova",
"tags": [
"developers",
"programming",
"chatting",
"ita"
],
"shortDescription": "Siamo un server nato per chattare e aiutare programmatori su Discord!",
"invite": "https://discord.gg/NdqUqHBxz9",
"__v": 0
}
例如,如果我需要獲取所有帶ita標簽的檔案,我需要獲取這個檔案。如果檔案ita在陣列標簽中沒有標簽,我不需要它并且代碼不會回傳它。
提前致謝,對糟糕的英語深表歉意。
uj5u.com熱心網友回復:
實際上你可以只請求標簽進行測驗,因為貓鼬會尋找每個標簽條目
所以這:
await Test.insertMany([{ tags: ["test"] }, { tags: ["Notest"] }])
let res = await Test.find({ "tags": "test" })
console.log(res)
}
回傳:
[
{
_id: new ObjectId("61b8af02c3effad21a5d7187"),
tags: [ 'test' ],
__v: 0
}
]
2個更整潔的事情要知道:
- 無論標簽有多少條目,這都有效,因為長期測驗是其中之一
- 這也使您可以使用位置 $ 運算子更改包含“測驗”的條目,因此 {$set: "tags.$": "smthNew"} 之類的內容將更改所有測驗條目
第二個例子:
let res = await Test.updateMany({ "tags": "test" }, { $set: { "tags.$": "new" } }, { new: true })
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/387319.html
