mongodb阵列的一部分

时间:2012-05-08 19:58:21

标签: mongodb

我的架构看起来像这样:

{
  "_id" : ObjectId("4f6af5c7065f92581a000013"),
  ....
  "conversation" : [{
      "_id" : ObjectId("4f6af5c7065f92581a000013"),
      "msg" : "message1",
      "userID" : 1
    },{
      "_id" : ObjectId("4f6af5c7065f92581a000016"),
      "msg" : "message3",
      "userID" : 1
    },{
      "_id" : ObjectId("4f6af5c7065f92581a000023"),
      "msg" : "msg",
      "userID" : 1
    }]
}

我需要的是输出一个元素列表,其键值msg包含'msg' 是否可以这样做?

db.dialogs.find({ "_id" : new ObjectId('4f6af5c7065f92581a000013'), "conversation.msg" : /msg/i })

但它会输出有关该对象的所有信息。我需要的只是

{
          "_id" : ObjectId("4f6af5c7065f92581a000023"),
          "msg" : "msg",
          "userID" : 1
        }

1 个答案:

答案 0 :(得分:1)

不,你不能自己选择子阵列的元素。将保留父文档的结构(但是,您可以选择不从其他对话的字段中进行选择(如示例中所示)。)