【问题标题】:MongoDB query array of objectsMongoDB查询对象数组
【发布时间】:2019-10-20 10:56:44
【问题描述】:

我有以下收藏

{
  "collection": "user",
  "shouldUpdate": false,
  "loadOrder": 1,
  "data": [{
    "avatarUrl": "/profiles/photo.do?uid=ddd",
    "userName": "ddd",
    "firstName": "Doron",
    "lastName": "Solomon",
    "password": "password",
    "email": "x@x.com",
    "masteries": []
  }, {
    "avatarUrl": "/profiles/photo.do?uid=bbb",
    "userName": "bbb",
    "firstName": "Bob",
    "lastName": "Goodman",
    "password": "bWIxNzcz",
    "email": "y@y.com",
    "masteries": []
  }]
}

我正在尝试查询这个coolection并从数据数组中只返回一个对象,但我总是把所有的集合都取回 我试过了:

db.users.find({ "data.lastName": "Solomon"}).pretty()

还有:

db.users.find({ data:{ $elemMatch: {lastName: "Solomon" }}}).pretty()

我在这里缺少什么? 谢谢

【问题讨论】:

    标签: mongodb nosql mongodb-query


    【解决方案1】:

    您的查询是正确的,但由于您只想从数据数组中匹配对象,因此您必须在 projection 中提及。

    db.users.find({ "data.lastName": "Solomon"},{"data.$": 1}).pretty()
    

    $,是 mongo 中的位置运算符。它将仅投影数据数组"data.$": 1中匹配的文档。

    【讨论】:

    • 它有效,谢谢 :-) 为了让我知道我是否只想返回与这个 lastName 匹配的 firstName,我应该怎么做?
    【解决方案2】:

    尝试只查询:

    db.users.find({ lastName: "Solomon" })

    【讨论】:

      猜你喜欢
      • 2021-09-24
      • 2012-05-05
      • 2014-05-13
      • 1970-01-01
      • 2020-07-27
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      相关资源
      最近更新 更多