mongoose 在MongoDB中更新同一文档中的两个字段,其中一个字段是简单更新,另一个字段附加到现有数组

iyzzxitl  于 2023-02-13  发布在  Go
关注(0)|答案(1)|浏览(150)

我的MongoDB集合中的文档有两个字段
1.最后经度纬度-[123.45,11.34] GeoJSON点格式

  1. multipleLongLat -[[12,45],[78,89],[12,54]] GeoJSON多点格式
    来自Http请求的数组newLongLat格式如下:newLongLat = [78.486671,17.385044]; multipleLongLat已经有数组的数组。我需要将两个字段更新为:
    1.将lastLongLat更新为newLongLat
    1.将newLongLat追加到multipleLongLat数组中已有数据的末尾。
    文档可按{“productId”:productId}。我正在使用Mongoose框架和NodeJS。请提供一个有效的方法来同时执行此操作?提前感谢。
yrefmtwq

yrefmtwq1#

聚合管道中的简单$set。您可以简单地将坐标字段视为对象的内部字段。

db.collection.update({
  "productId": "p1"
},
[
  {
    $set: {
      "lastLongLat": {
        type: "Point",
        coordinates: [
          78.486671,
          17.385044
        ]
      },
      "multipleLongLat.coordinates": {
        "$concatArrays": [
          "$multipleLongLat.coordinates",
          [
            [
              78.486671,
              17.385044
            ]
          ]
        ]
      }
    }
  }
])

Mongo Playground

相关问题