Как обновить коллекцию mongodb одним документом, используя pymon go? - PullRequest
0 голосов
/ 06 января 2020

Если я создаю коллекцию с одним документом, используя:

db.time_data.insert({"Last_updated":"Jan 6 22:19:48 IST","Next_scheduled":"Jan 6 23:19:48 IST"})

Как я могу обновить Last_updated и Next_scheduled fields? Я хотел бы сделать это без использования какого-либо селектора для команды обновления. Здесь селектором будет автоматически сгенерированный идентификатор.

1 Ответ

2 голосов
/ 06 января 2020

Не уверен, как вы создали документ, используя:

db.time_data.insert({"Last_updated":"Jan 6 22:19:48 IST"},{"Next_scheduled":"Jan 6 23:19:48 IST"})

, потому что эта операция приведет к тому, что документ будет создан следующим образом:

/* 1 */
{
    "_id" : ObjectId("5e1374692a0e7dc716ae47fa"),
    "Last_updated" : "Jan 6 22:19:48 IST"
}

Это нормально, как второй объект {"Next_scheduled":"Jan 6 23:19:48 IST"} игнорируется, ваш запрос должен быть таким же, как показано ниже, чтобы создать один документ с двумя полями:

db.time_data.insert({"Last_updated":"Jan 6 22:19:48 IST","Next_scheduled":"Jan 6 23:19:48 IST"})

Обновление:

Поскольку ваша коллекция у вас есть только один документ, для его обновления вам не нужен фильтр, вы просто делаете:

db.time_data.update({}, {"Last_updated":"Jan 7 22:19:48 IST","Next_scheduled":"Jan 7 23:19:48 IST"})

(или)

db.time_data.updateOne({}, {$set :{"Last_updated":"Jan 8 22:19:48 IST","Next_scheduled":"Jan 8 23:19:48 IST"}})

(или)

db.time_data.findOneAndUpdate({}, {$set :{"Last_updated":"Jan 9 22:19:48 IST","Next_scheduled":"Jan 9 23:19:48 IST"}})

Таким образом, вы можете использовать любой из вышеперечисленных или даже .updateMany() в зависимости от необходимости, проверьте их ответы, некоторые возвращают результат записи или некоторые возвращают обновленный документ (если вы установили опцию для возврата нового документа). Эти запросы относятся к оболочке mongoDB, найдите ссылку update в pymon go Ref , чтобы преобразовать их для работы с python (большинство базовых c изменений будут синтаксическими например, updateOne до update_one, updateMany до update_many, также проверяйте параметры, передаваемые с ними, поскольку они могут варьироваться от оболочки mongoDB до драйверов, таких как pymongo / mongoDB driver / mongoose).

MongoDB Ref: update , .findOneAndUpdate ()

pymon go Ref: pymon go -do c

...