arrays - 从 mongoose find() 查询中提取一个值

标签 arrays node.js mongodb mongoose aggregation-framework

在 find ("-_id services.location") 的 mongoose 查询中,字符串化的输出是:

[
   {
      "services":[
         {
            "location":[
               17.4374614,
               78.7482878
            ]
         },
         {
            "location":[
               17.4020637,
               78.18400519324596
            ]
         },
         {
            "location":[
               17.56208737,
               78.284005186526
            ]
         },
         {
            "location":[
               17.5620637,
               78.3240051999554
            ]
         }
      ]
   }
]

有什么方法可以让我从我得到的输出中访问每个单独的位置值,例如(17.4374614、78.7482878、17.4020637....)。

我的架构如下:-

var serviceSchema = new mongoose.Schema({
    location:[{type: Number}]
})

最佳答案

您正在寻找的是 $reduce$concatArrays运营商。

[
  {
    "$project": {
      "result": {
        "$reduce": {
          "input": "$services.location",
          "initialValue": [],
          "in": {
            "$concatArrays": [
              "$$this",
              "$$value"
            ]
          }
        }
      }
    }
  }
]

See demo

关于arrays - 从 mongoose find() 查询中提取一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51337769/

相关文章:

ios - 将其分解为可用字符串的最佳方法是什么

node.js - Nginx 作为 Web 服务器或带有 Cloudfront CDN 的 Node JS

javascript - 如何减少socket.io中客户端接收数据的时间差?

javascript - 如何正确执行 createReactionCollection

javascript - Mongoose:嵌套 Json 的架构并存储它 (Node.js)

javascript - 循环对象数组并根据键值对的匹配集进行过滤/排序/分组。

php - 多维数组转JSON

python - 如何改进从 2D numpy 数组中删除重复元素?

mongodb - 错误 : couldn't add user: No role named root@test

mysql - 三重嵌套数组 MongoDB 查询