【问题标题】:Finding element in array within a document在文档中的数组中查找元素
【发布时间】:2016-04-14 13:15:32
【问题描述】:

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

示例: 使用UID=123 搜索此集合应返回id1id2

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

【问题讨论】:

    标签: json node.js mongodb mongoose


    【解决方案1】:

    您可以为此使用$elemMatch

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • @bubakazouba:您可以将'123' 替换为{ '$oid': '123' },尽管我不使用Mongo,只是阅读文档。
      【解决方案3】:
      var query = FriendHittups.find({
        usersInvited: {
          $elemMatch: {
            "UID": "123"
          }
        }
      });
      
      query.exec(function (err, results){
      
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-17
        • 1970-01-01
        • 2016-02-17
        • 1970-01-01
        • 2021-05-27
        • 1970-01-01
        • 2014-05-19
        相关资源
        最近更新 更多