2013-06-26 49 views
1

这里是我想要查询MongoDB的查询在阵列

{ 
    "_id":"asdf0-002f-42d6-b111-ade91df09249", 
    "user":[ 
     { 
     "_id":"14bfgdsfg0-3708-46ee-8164-7ee1d029a507", 
     "n":"aaa" 
     }, 
     { 
     "_id":"aasdfa89-5cfe-4861-8a9a-f77428158ca9", 
     "n":"bbb" 
     } 
    ] 
} 

该文件有2个用户参考,并包含用户_id和其他杂项信息的样本文件。我有2个用户标识,并试图通过用户标识获取此文档。我也不知道2个ID的顺序。这是一个可能的查询?

col.findOne({ 
    user:{ 
     $all:[ 
     { 
      _id:"14bfgdsfg0-3708-46ee-8164-7ee1d029a507" 
     }, 
     { 
      _id:"aasdfa89-5cfe-4861-8a9a-f77428158ca9" 
     } 
     ] 
    } 
}) 

^^我试过的东西不起作用。

回答

1

你接近你的$ all尝试。

col.findOne({ 
    "user._id":{ 
     $all : [ "14bfgdsfg0-3708-46ee-8164-7ee1d029a507", 
      "aasdfa89-5cfe-4861-8a9a-f77428158ca9" ] 

    } 
} 

您可以通过包装引号来查询子文档。从那里$全部对您正在寻找的价值。

Mongodb find a document with all subdocuments satisfying a condition显示了此类查询的变体。

1

ElemMatch应该做的伎俩。

col.findOne({用户:{$ elemMatch:{ “_ ID”: “14bfgdsfg0-3708-46ee-8164-7ee1d029a507”, “_id”: “aasdfa89-5cfe-4861-8a9a-f77428158ca9”}}} )

+0

我实际上需要在文档中包含这两个ID。这也匹配其他文件。这个文档是这两个用户的聊天文档,所以我需要他们两个。 – Harry