如何使用mongodb中的对象更新数组?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用mongodb中的对象更新数组?相关的知识,希望对你有一定的参考价值。

我尝试将geojson对象添加到mongodb中的现有数组,这是我要添加的对象:

const location = {
        type: "Feature",
          properties: {
            description: place.address,
            name: place.name
          },
          geometry: {
            coordinates: [
              place.latLng.latitude,
              place.latLng.longitude
            ],
            type: "Point"
          },
          userIds: [userId],
          id: place.id
        }

我尝试使用此mongodb调用没有任何效果:

db.collection.updateOne(
          { _id: "5e6e32051c9d4400128cba9c" },
          { $push: { features: location } },
          function(err, result) {
            if (err) {
                reject(err);
            }

            console.log(result);

            console.log("Added new location successfully");
            resolve(true);
          });

这什么都不做。 Features是一个数组,其中应包含geojson对象。我该怎么办?

答案

确定,我在此页面上找到了答案:https://www.quora.com/How-do-I-update-a-document-in-mongodb-using-_id-as-query-parameter

为了查询_id,您显然必须先将_id转换为ObjectId。

所以我在这里这样做:

const ObjectID = require('mongodb').ObjectID;
const id = ObjectID("5e6e32051c9d4400128cba9c");

然后:

db.collection.updateOne(
          { _id: id },
          { $push: { features: location } },
          function(err, result) {
            if (err) {
                reject(err);
            }

            console.log(result);

            console.log("Added new location successfully");
            resolve(true);
          });

这确实有效! :)

以上是关于如何使用mongodb中的对象更新数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何更新数组NodeJS,MongoDB中的特定对象

MongoDB。如何更新数组内的json属性

mongodb更新数组中的单个对象

为什么我不能在此片段中生成唯一对象数组?

更新 mongodb 中的嵌套数组

如何使用猫鼬更新数组中的现有对象