Mongoose 查找数组中包含字符串的所有文档
Mongoose find all documents that have a string in an array
我有一个问题:
我如何使用猫鼬找到数组中包含字符串的所有文档?
比如我的文档:
<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
标签,我不需要它,代码也不会 return 它。
提前致谢,抱歉英语不好。
实际上,您可以只请求要测试的标签,因为 mongoose 会查找每个标签条目
所以这样:
await Test.insertMany([{ tags: ["test"] }, { tags: ["Notest"] }])
let res = await Test.find({ "tags": "test" })
console.log(res)
}
returns 即:
[
{
_id: new ObjectId("61b8af02c3effad21a5d7187"),
tags: [ 'test' ],
__v: 0
}
]
另外 2 件需要知道的事情:
- 无论标签有多少条目,只要 long test 是 ethem 之一,这都有效
- 这也使您能够通过使用位置 $ 运算符更改包含“测试”的条目,因此类似 {$set: "tags.$": "smthNew"} 的内容将更改所有测试条目
第二个示例:
let res = await Test.updateMany({ "tags": "test" }, { $set: { "tags.$": "new" } }, { new: true })
我有一个问题:
我如何使用猫鼬找到数组中包含字符串的所有文档?
比如我的文档:
<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
标签,我不需要它,代码也不会 return 它。
提前致谢,抱歉英语不好。
实际上,您可以只请求要测试的标签,因为 mongoose 会查找每个标签条目
所以这样:
await Test.insertMany([{ tags: ["test"] }, { tags: ["Notest"] }])
let res = await Test.find({ "tags": "test" })
console.log(res)
}
returns 即:
[
{
_id: new ObjectId("61b8af02c3effad21a5d7187"),
tags: [ 'test' ],
__v: 0
}
]
另外 2 件需要知道的事情:
- 无论标签有多少条目,只要 long test 是 ethem 之一,这都有效
- 这也使您能够通过使用位置 $ 运算符更改包含“测试”的条目,因此类似 {$set: "tags.$": "smthNew"} 的内容将更改所有测试条目
第二个示例:
let res = await Test.updateMany({ "tags": "test" }, { $set: { "tags.$": "new" } }, { new: true })