Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongo查询以查找对象数组中的字段_Mongodb_Mongodb Query - Fatal编程技术网

Mongodb Mongo查询以查找对象数组中的字段

Mongodb Mongo查询以查找对象数组中的字段,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个名为collectionA的集合,它包含一个类型对象数组 例如: { "_id" : ObjectId("123456"), "tags" : [ { "name" : "Bob D", }, { "name" : "another name", } ... 如何编写与对象数组中的名称匹配的查询? 我尝试了db.getCollection('collectionA')。查找({“name”:“Bob D}),但

我有一个名为
collectionA
的集合,它包含一个类型对象数组

例如:

{
"_id" : ObjectId("123456"),
"tags" : [ 
    {
        "name" : "Bob D",
    }, 
    {
        "name" : "another name",
    }
    ...
如何编写与对象数组中的名称匹配的查询?
我尝试了
db.getCollection('collectionA')。查找({“name”:“Bob D})
,但没有成功。

要筛选嵌套数组,您可以使用(作为投影):

它返回第一个匹配数组元素,或用于获取
标记的多个匹配元素
数组:

db.col.aggregate([ { $addFields: { tags: { $filter: { input: "$tags", as: "tag", cond: { $eq: [ "$$tag.name", "Bob D" ] } } } } } ])

要过滤嵌套数组,可以使用(作为投影):

它返回第一个匹配数组元素,或用于获取
标记的多个匹配元素
数组:

db.col.aggregate([ { $addFields: { tags: { $filter: { input: "$tags", as: "tag", cond: { $eq: [ "$$tag.name", "Bob D" ] } } } } } ])

您可以从您的集合和预期输出中添加示例文档吗?请尝试
db.getCollection('collectionA')。查找({“tags.name”:“Bob D”})
,因为
name
嵌套在
tags
@mickl中,我已经尝试了您的命令,只是想取回整个对象(objectId(123456))您可以从集合和预期输出中添加示例文档,而不是名称与之匹配的标记数组中的单个对象?请尝试
db.getCollection('collectionA')。查找({“tags.name”:“Bob D”})
由于
name
嵌套在
tags
@mickl中,我尝试了你的命令,但我要取回的是整个对象(objectId(123456)),而不是tags数组中名称与hanks非常匹配的单个对象!这两种方法都很有效。实际上,要构建它,为什么需要标记:{$elemMatch:{name:{Bob D}除了db.col.find({“tags.name”:“Bob D”}之外,我知道如果不包括elemMath,我将返回整个文档,而不仅仅是与name匹配的对象。
find()的第二个参数
表示一个投影,它允许您重塑存储在数据库中的文档。非常感谢!这两种方法都很有效。事实上,要构建这个投影,除了db.col.find({“tags.name”:“Bob D”}之外,还需要标记:{$elemMatch:{name:{Bob D:}?我知道如果我不包括elemMath,我会取回整个文档,而不仅仅是与name匹配的对象。
find()
的第二个参数表示一个投影,它允许您重塑存储在db中的文档的形状