0

私は次の構造のドキュメントを持っています:

{
  "_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,
})

ただし、非表示(info.email:0)は機能します。不要なフィールドをすべて隠すことなく、目標を達成することは可能ですか?

4

1 に答える 1

0

オフにする_id(デフォルトで含まれている)以外に、フィールドの包含と除外を混在させることはできません。

info.surnameしたがって、フィールドとinfo.nameフィールドをリクエストするだけです。

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

サンプル出力:

{ "info" : { "name" : "name", "surname" : "surname" } }
于 2012-11-30T20:10:44.963 に答える