Я получаю JSONObject и хотите perfom обновление MongoDB:Обновление множественного значения в массиве в MongoDB
JSONObject: "tablename":"1","inventar":[{"ean":"802.6180.222"},{"ean":"657.7412.878"}]}
Существующий документ (укороченный):
"tablename": "1",
"accepted": false,
"inventar": [
{
"ean": "802.6180.222",
"accepted": "0"
},
{
"ean": "657.7412.878",
"accepted": "0"
}
],
Мне нужно установить принятое значение «1» для каждого объекта в массиве (который находится в объекте invetar-jsonObject.)
Код:
app.post('/in_accept', function(request,response){
var jsonString=request.body.json;
var jsonObj = JSON.parse(jsonString);
var InUser = jsonObj.in_user;
var InDate = jsonObj.in_date;
var inventar = jsonObj.inventar; //is an Array
var tablename = jsonObj.tablename;
console.log(inventar);
var query = {"tablename": tablename};
var update = {"accepted": true, CODE FOR UPDATING INVENTAR};
var options = {"upsert": false, "new": true};
Move.findOneAndUpdate(query, update, options,
function(err,Move) {
console.log(Move);
});
response.json({"success": true});
});
Я знаю, что mongoDB предоставляет оператор «каждый», но я придерживался всего синтаксиса. Для каждого «ean» принятое значение должно быть установлено на «1».
Благодаря
спасибо, работает как epxected. Каждый раз, когда я использую MongoDB гораздо глубже, это ужасно. Так много апи вокруг ... – Piet
@Piet Я лично считаю это довольно простым. Как будто я знаю, что я регулярно хочу обновлять несколько вещей, таких как вы здесь, то я либо принимаю несколько процессов обновления, как описано выше, либо использует другую коллекцию, которую я могу просто обновить с помощью '{" multi ": true}' .I зависит от что лучше всего подходит для меня. У меня многолетний опыт работы с SQL Relational (не молодой), и я использую решения NoSQL, такие как MongoDB, чтобы лучше соответствовать случаям, когда реляционная модель не применяется. В противном случае я использую реляционный движок. –