Mongodb 如何仅返回数组的匹配成员

Mongodb 如何仅返回数组的匹配成员,mongodb,Mongodb,请告诉我我在这里遗漏了什么: 这是我创建的文档: fatDoc = { name: "Babak", personID : 555, email : "babak@babak.name", music : ["pink floyd", "muse", "garfunkel"], food : ["free food", "yummy food", "mom food"], addresses: [ { type: "home", street: "123 Mai

请告诉我我在这里遗漏了什么:

这是我创建的文档:

 fatDoc = {
 name: "Babak",
 personID : 555,
 email : "babak@babak.name",
 music : ["pink floyd", "muse", "garfunkel"],
 food : ["free food", "yummy food", "mom food"],
 addresses:
   [ { type: "home",
       street: "123 Main",
       state: "NY",
       city: "brooklyn"
    },
    { type: "vacation",
      street: "456 sunshine",
      state: "CA",
      city: "SanFran"
    }
  ]   
 }
这是我在上面运行的查询:

db.coolkids.find({"addresses.type" : "home"}, {addresses:1}).pretty()
问题1:为什么这两个地址都作为查询结果返回? 问题2:如何将其更改为仅返回第一个文档,即“主”地址,而不是数组的第二个成员

  • 您的查询与此文档匹配,并且您将返回字段“addresses”,该字段恰好是一个数组。在2.0中,返回少于完整数组的唯一方法是通过$slice操作符,但您需要知道所需元素的位置

  • 只返回一个与查询匹配的元素的方法是使用新的(在开发版本2.1中提供,将随2.2一起发布)


  • 聚合框架将允许您“$unwind”数组,这样您就可以只返回带有匹配过滤器的数组元素的文档。

    感谢Asya,MongoDB的书籍作者、工程师和架构师来到这里,帮助我们了解更多关于MongoDB的信息。