在文档中查找数组中的元素

时间:2016-01-10 01:34:11

标签: json node.js mongodb mongoose

我是MongoDB / Mongoose的新手,我正在尝试查找他们的usersInvited数组包含某个UID的所有文档。

实施例: 使用UID=123搜索此集合时,应返回id1id2

[
  {
    "_id": "id1",
    "usersInvited": [
      {
        "UID": "123"
      }
    ]
  },
  {
    "_id": "id2",
    "usersInvited": [
      {
        "UID": "123"
      }
    ]
  },
  {
    "_id": "id3",
    "usersInvited": [
      {
        "UID": "abc"
      }
    ]
  }
]

3 个答案:

答案 0 :(得分:2)

您可以使用$elemMatch

db.myCollection.find({
  usersInvited: {
    $elemMatch: {
      UID: "123"
    }
  }
})

https://docs.mongodb.org/v3.0/reference/method/db.collection.find/#query-an-array-of-documents

答案 1 :(得分:2)

您可以使用点表示法直接查询UID数组元素中的usersInvited字段:

MyModel.find({'usersInvited.UID': '123'}, (err, docs) => {...});

如果数组中的任何元素的UID值为'123',则会包含该文档。

答案 2 :(得分:1)

var query = FriendHittups.find({
  usersInvited: {
    $elemMatch: {
      "UID": "123"
    }
  }
});

query.exec(function (err, results){

});