mongodb 查询子节点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongodb 查询子节点相关的知识,希望对你有一定的参考价值。

请问 mongodb 中怎么查找子节点 Status 全部等true 的数据记录

参考技术A t.find( PproveObject : $elemMatch : Status:True )

$elemMatch匹对对象数组内元素

不知道是否是你要的追问

谢谢,这个解决不了,这样写如果有一个子节点的status 为true 就会有返回这条数据

追答

不好意思,看漏你的要求

我不清楚

MongoDB 查询子文档数组

【中文标题】MongoDB 查询子文档数组【英文标题】:MongoDB query array of subdocuments 【发布时间】:2016-09-29 19:30:30 【问题描述】:

在发布此问题之前,我已经进行了彻底的研究,但找不到准确的解决方案。 我有以下结构

stname: "SC",
dob : "1985",
education [
            name : Lancaster,
             year : 2013,

            name : Manchester, 
             year : 2001, 
             grad : 2004,

            name : Gambia, 
             year : 2001, 
             grad : 2011
         ]

所以我只想返回具有 grad 字段的文档。所以最后两个文件应该返回。

我尝试了以下查询,但无济于事

db.applicants.find("education" :  $elemMatch : "grad" : $exists : true, "name":1, "education.grad" : 1).pretty()

如下图只返回第一个匹配,第一个文档为空


    "_id" : ObjectId("574dd5fcbda73af19e361a3f"),
    "name" : "SC",
    "education" : [
        

        ,
        
            "grad" : "2004"
        ,
        
            "grad" : "2011"
        
    ]

以下查询也为您提供了类似的结果,这是一个空文档,其中 grad 字段不可用。

db.applicants.find("education.grad" :  $exists : true, "education.grad" : $exists : true, "education.grad" : 1, name : 1 , dob : 1).pretty()

【问题讨论】:

我在这里回答了类似的问题:***.com/questions/37510908/… @felipsmartins,我觉得他们很不一样,他试图基于一个字段进行查询。 哦,我明白了。恐怕你必须使用聚合。 @felipsmartins,查看第一个查询输出的编辑。空文件是主要问题。没有它,一切都会正常工作。 ***.com/questions/3985214/… 的可能欺骗。可以在此处找到单元素和多元素案例的答案。 【参考方案1】:

更新答案:

db.applicants.aggregate($unwind: "$education", 
$match: "education.grad":$exists: true, 
$project: "education.name": 1, "education.grad": 1, "_id": 0)

这将返回两条记录,没有空文档。

【讨论】:

这将为您提供与我上面的查询相同的结果。您将有一个空文档,其中没有毕业生可用。 @fanbondi 太奇怪了。我尝试重新创建您的文档并编写与您相同的查询,但没有得到您发布的相同结果。我认为缺少一些东西。需要明确的是,无论是使用我的查询还是您的查询,我都没有得到一个空文档。 嗯,这很有趣。那一定是什么问题。我正在使用 Mongo 3.2.5。你用的是哪个版本。 db.version() 会给你结果。 我输入了一个与您的不匹配的集合(问题开头提供的代码存在一些格式问题)。请参阅我的新答案。我希望这行得通!我正在使用 3.2.4。

以上是关于mongodb 查询子节点的主要内容,如果未能解决你的问题,请参考以下文章

实战之部署Redis哨兵模式-Docker版本

SqlServer 中查询子节对应的上级自定义函数

jQuery DOM节点操作 - 父节点子节点兄弟节点

ztree获取当前选中节点子节点id集合的方法(转载)

是元素节点的属性节点子节点

EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中