Как мне обновить массив, используя объект в mongodb? - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь добавить объект geo json в существующий массив в 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 - это массив, который должен содержать объекты geo json. Что я делаю не так?

1 Ответ

0 голосов
/ 15 марта 2020

Хорошо, я нашел ответ на этой странице: 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);
          });

Это сработало! :)

...