mongodb - 如何在mongodb的对象数组中查找数据
问题描述
我在对象数组中找到并匹配 _id 和 is_active 两个键
前任
{
_id:'12333333333333'
name:'test',
array:[{
id:'1233449',
is_active:true
},{
id:'7987979',
is_active:false
},{
id:'9558555',
is_active:true
},{
id:'2564654',
is_active:false
}]
}
使用 mongo 查询查找数据
db.getCollection('demo').find({'array.id':'7987979','array.is_active':false});
不工作
解决方案
它不适合您的原因是因为您直接在阵列上运行查找操作。
在查询数组中的内容时,您可以使用它$elemMatch
来获取包含匹配数组元素的整个文档。
如果您需要自定义输出,您可以使用聚合,$unwind
在数组字段的管道中进行操作。
在你的收藏上试试这个并了解它在做什么
db.collectionName.aggregate([{
$unwind:"$array"
},{
$match:{
$and:[
{"array.id":'your_id'},
{"array.is_active":boolean}
]
}
}
])
推荐阅读
- android - 如何在不知道哪个对话框的情况下关闭任何正在运行的对话框?
- c# - 如何使用 for 循环从文本框中的单选按钮值计算和显示平均成绩?
- mysql - mysql 喜欢所有单词的排列
- ms-access - 在 Access 中使用组合过滤无法正常工作
- python - 如何使 pylint 只计算没有默认值的参数?
- graphql - 为什么 GitHub Graphql 和 Yelp GraphQL 不允许多个 orderBy 字段?
- docker - dockerfile 是否有关于超级账本结构的基本映像的任何代码?
- python-3.x - 为什么我应该使用(y,x)而不是(x,y)来访问opencv中的像素?
- database - 禁用外键取消引用休眠
- oracle-apex - 如何在oracle apex中冻结交互式网格中的列