MongoDB - 如何查找数组中的所有对象? [英] MongoDB - How to find all objects within an array?

查看:16
本文介绍了MongoDB - 如何查找数组中的所有对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在名为 programme 的数组中查找 所有 元素.运行 db.base.find({"programme.title":"News"},{"programme.$.title":"News"}).pretty() 的结果是:

I'm trying to find all elements within an array called programme. The result of running db.base.find({"programme.title":"News"},{"programme.$.title":"News"}).pretty() is:

{
"_id" : ObjectId("55a48dd3e72db9d63e53478b"),
"programme" : [
    {
        "attributes" : {
            "start" : "20150713010000 -0400",
            "stop" : "20150713013000 -0400",
            "channel" : "I47176.labs.zap2it.com"
        },
        "title" : "News",
        "category" : "News",
        "episode-num" : "SH01831861.0000",
        "new" : true
    }
]
}

但是还有很多个条目称为新闻",而不只是一个,如上所示.

But there are many more entries called "News", not just one, as shown above.

我也试过 db.base.find({"programme.title":"News"}).pretty() 但这只会导致列出一堆随机条目,无论是或者他们是否有新闻"的标题.

I've also tried db.base.find({"programme.title":"News"}).pretty() but that just results in listing a bunch of random entries, whether or not they have the title of "News".

非常感谢您的帮助,并且必须为菜鸟问题道歉".

Thanks a lot for the help, and obligatory "apologies for noob question".

推荐答案

你可以在 Aggregation 的帮助下实现如下:

You can achieve with the help of Aggregation as below :

 db.base.aggregate([
    {$unwind : "$programme"},
    {$match : { "programme.title" : "News" } },
   {$group : { "_id" : "$_id" , "programme" : { $push: "$programme" } } }
]);

这篇关于MongoDB - 如何查找数组中的所有对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆