mongodb - Mongo查询以查找对象数组中的字段
问题描述
我有一个名为的集合collectionA
,其中包含一个类型对象数组。
例子:
{
"_id" : ObjectId("123456"),
"tags" : [
{
"name" : "Bob D",
},
{
"name" : "another name",
}
...
我将如何编写与对象数组中的名称匹配的查询?我试过db.getCollection('collectionA').find({ "name": "Bob D})
了,但没有奏效。
解决方案
要过滤嵌套数组,您可以使用$elemMatch(作为投影):
db.col.find({ "tags.name": "Bob D" }, { tags: { $elemMatch: { name: "Bob D" } } })
返回第一个匹配的数组元素,或使用$filter获取tags
数组的多个匹配元素:
db.col.aggregate([ { $addFields: { tags: { $filter: { input: "$tags", as: "tag", cond: { $eq: [ "$$tag.name", "Bob D" ] } } } } } ])
推荐阅读
- r - 导出到 excel 之前数据框的颜色列表
- mysql - MySQL主从复制连接失败
- reactjs - 使用 Jest 和 Expo 时如何在 React Native 中调试测试
- router - Mikrotik - 脚本作业的结果为 var 为空
- hibernate - 嵌入式 ID 映射失败并出现 DescriptorException:应该为主键字段定义一个非只读映射 (EclipseLink)
- flutter - 项目位置已经存在于flutter中
- python - 使用具有非图像输入的卷积神经网络
- flutter - 颤振错误:类型'(String,ItemPriority)=> void'不是类型'(String,[ItemPriority])=>动态'的子类型
- flutter - 如何在颤动中获得地理位置
- python - 在 netcdf 文件中将时间轴单位从“之后的年”更改为“之后的天”