1

この mongo ドキュメントを照会するための特定の構文について理解できません。u="123" の「エントリ」のみを取得 (プロジェクト?) したい。私はそのようなことを試しました:

db["conv_msgs_822"].aggregate({$match: {"_id": "1234", "entries.$.u" : "123"}})

これは失敗します。これは可能ですか?

{
  "_id" : "1234",
  "entries" : {
    "1" : {
      "body" : "aesf asdf asdf asdf asdf",
      "u" : "123"
    },
    "2" : {
      "body" : "1234",
      "u" : ""
    },
    "3" : {
      "body" : "some other body ",
      "u" : "14"
    },
    "4" : {
      "body" : "another body",
      "u" : "123"
    }
  }
}
4

2 に答える 2

0

これまでのところ、これに対する最良の可能性は次のとおりです。

db.eval( function(doc, u_val) {
            var msgs = doc["entries"];
            var cleaned_entries = {};
              for (var k in entries){
                if (msgs[k].u == u_val){
                  cleaned_entries[k] = entries[k];
                  }
              };
            doc["entries"] = cleaned_entries

            return doc
         },
         db["conv_msgs_822"].findOne({"_id": "1234"}), 123 );
于 2013-08-20T06:35:13.900 に答える