MongoDB不显示子文档中的所有元素

时间:2012-11-30 19:12:48

标签: mongodb

我有以下结构的文件:

{
  "_id" : ObjectId("50b8f881065f90c025000014"),
  "education" : {
    "schoolCountry" : 4,
    "schoolTown" : -1,
    "uniCountry" : 4,
    "uniTown" : -1
  },
  "info" : {
    "ava" : "auto.jpg",
    "birthday" : ISODate("1942-04-01T21:00:00Z"),
    "email" : "mail@gmail.com",
    "name" : "name",
    "sex" : 1,
    "surname" : "surname"
  }
}

我试图只输出姓氏和名字

我唯一能做到的就是:

db.COLL.find({ }, {
   "_id" : 0,
   "education" : 0,
   "info" : 1
})

我的想法只显示我需要从子文档中删除的元素:

db.COLL.find({ }, {
   "_id" : 0,
   "education" : 0,
   "info.surname" : 1,
   "info.name" : 1,
})

但是hidding(info.email:0)有效。是否有可能在不隐藏所有不需要的字段的情况下实现我的目标?

1 个答案:

答案 0 :(得分:0)

除了关闭_id(默认包含)之外,您不能混合包含和排除字段。

只需请求info.surnameinfo.name字段:

db.coll.find({ }, {
    "_id" : 0,
    "info.surname" : 1,
    "info.name" : 1,
})

示例输出:

{ "info" : { "name" : "name", "surname" : "surname" } }