arrays - 如何使用 mongoose find 按内部数组进行过滤
问题描述
{
"_id" : ObjectId("5fa27539e2b1a10d0fdb82ba"),
"extra_fields" : [
{
"tag" : "alias",
"value" : "thealias"
},
{
"tag" : "name",
"value" : "nobody"
},
]
}
这就是我所指的对象,例如,我需要在每个对象的 extra_fields 数组中查询所有具有 tag="alias" 的对象。如何使用 MongoDB 实现这一目标?任何帮助将不胜感激。
更新:请检查这个,
{
"_id" : ObjectId("5fa1b8ee30caf0655a64104a"),
"status" : true,
"extra_fields" : [
{
"tag" : "alias",
"value" : "hes"
},
{
"linked_collection_id" : "5fa1946a3ef5864410728f1f",
"linked_master_id" : [
"5fa19884dae0ba587c891d9a"
]
},
{
"linked_collection_id" : "5f7d68861d5a43b422b12c6d",
"linked_master_id" : [
"5f7d6c3b629ab057b67fa789"
]
}
]
}
我需要知道如何检索具有linked_collection_id='abc'且linked_master_id 包含'xyz'的对象。谢谢
解决方案
您只需要"extra_fields.tag": "alias"
比较字段和结果。
查询很简单:
db.collection.find({
"extra_fields.tag": "alias"
})
通过这种方式,将返回至少包含一个值为“alias”的“tag”字段的每个文档。
这里的例子
编辑:
要按多个字段查找,您可以使用以下命令:
db.collection.find({
"extra_fields.linked_collection_id": "abc",
"extra_fields.linked_master_id": "xyz"
})
推荐阅读
- node.js - 无法使用 mongoose 将文档保存到 mongodb
- cryptography - 如何防止虚假数据被发送到区块链
- gnuplot - 在gnuplot中绘制3D绘图的y = 0平面中的曲线
- c - 在 g_signal_connect 中将整数作为 gpointer 传递
- visual-studio-code - 尝试导入 PyQt5 包中的任何模块时发生错误
- webrtc - createOffer 中的 iceRestart 选项
- node.js - ENOENT 错误 - 没有这样的文件或目录,打开“package.json”,当从 Electron Builder/Packager 打包时
- python - 如何解决属性错误“Int64Index'对象没有属性'inferred_freq'”
- scala - Spark - 找不到分隔符,如何在行尾添加分隔符?
- docker - 具有多个实例的 IdentityServer4