如何查询与一项相关的所有信息?

时间:2018-12-11 14:00:08

标签: json mongodb find

我将如何编写查询以仅获取与卡尔有关的信息?

      { 
     "t" : 0,
    "member" : [
                     {   "name": "Carl",
                            "ad": 
                           {
                                "firstline" : 123,
                                "secondline": 456
                            }
                       },
                     {   "name": "John",
                            "ad": 
                           {
                                "firstline" : 345,
                                "secondline": 1256
                            }
                       }
                       ]
}
{
  "t" : 1,
    "member" : [
                     {   "name": "Carl",
                            "ad": 
                           {
                                "firstline" : 1323,
                                "secondline": 4536
                            }
                       },
                     {   "name": "John",
                            "ad": 
                           {
                                "firstline" : 3245,
                                "secondline": 123456
                            }
                       }
                       ]
}

所需的输出:

    { 
         "t" : 0,
        "member" : [
                         {   "name": "Carl",
                                "ad": 
                               {
                                    "firstline" : 123,
                                    "secondline": 456
                                }
                           }
                           ]
}
{

        "t" : 1,
        "member" : [
                         {   "name": "Carl",
                                "ad": 
                               {
                                    "firstline" : 1323,
                                    "secondline": 4536
                                }
                           }                 
                           ]
    }

我尝试过的事情:

db.people.find("member.name" :"Carl")

但是它没有输出所需的信息,并且当t更大时,数据不是按时间顺序排列的。而且,当将数据导出到新的JSON文件时,信息会丢失其结构,这意味着条目之间没有换行符。知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您可以将find()方法的投影部分使用$elemMatch (projection)运算符来指定数组过滤条件:

db.people.find({ "member.name": "Carl" }, { member: { $elemMatch: { name: "Carl" } }, t: 1 })