【问题标题】:Projecting single element of array in embedded document [duplicate]在嵌入式文档中投影数组的单个元素[重复]
【发布时间】:2017-08-22 00:50:54
【问题描述】:

我有一个包含多层嵌套文档的集合,底层包含一些数组。例如,像

{
    "_id": ObjectId("56cad039213484920df2"),
    "foo": "this",
    "res": {
       "res1": {
           "t1": [1, 1, 1, 1, 1, 1]
               }
           }
    ...
}

现在我想查询嵌套底层的单个数组索引。我可以设法用类似的东西访问 整个 数组

db.my_db.find({'foo': 'this'}, {'res.res1.t1': 1})

然后from the documentation,我想为了访问这个数组的一个单个元素,假设在索引2,我应该使用$slice

db.my_db.find({'foo': 'this'}, {'res.res1.t1': {$slice: 2}})

但这似乎不起作用,只是将完整的文件还给我。

那么我的问题是,如何将数组的单个元素投影到嵌入文档中?

我使用的是 Mongo 版本 3.4.1。

【问题讨论】:

    标签: arrays mongodb projection


    【解决方案1】:

    您可以使用$slice 获取 first(1)、last(-1) 和任何切片。 $slice:2 会给你前两个元素[1, 1]

    您需要对任何其他索引值使用聚合。

    使用$arrayElemAt 聚合运算符从数组中投影索引值。

    类似

    db.my_db.aggregate({$match:{'foo': 'this'}}, {$project:{'element2': {$arrayElemAt: ['$res.res1.t1', 1]}}})

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-24
      • 2021-08-06
      • 1970-01-01
      • 2021-03-07
      • 1970-01-01
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多