Node.JS, MONGODB, не используется Mongoose.MongoDB Upserts Имя переменной в качестве ключа (Node.JS)
У меня есть документ, который я сохраняю. Когда я использую UPSERT, она структурирует данные, как так:
{ "_id" : ObjectId("573a123f55e195b227e7a78d"),
"document" :
[ {"name" : "SomeName" } ]
}
При использовании INSERT вставляет все это на уровне корня:
{ "_id" : ObjectId("573a123f55e195b227e7a78d"), "name" : "SomeName" }
Это, очевидно, будет приводить к большому количеству несоответствий. Я пробовал разные вещи. Я пробовал различные методы, такие как findOneAndReplace, Update with Upsert, я попытался заменить, $ setOnInsert. Все это делает то же самое, что и Upsert.
Я пытался использовать документ [0] для доступа первого блока массива, но выдает ошибку ... Неожиданный токен [ '
Я пробовал различные методы и закопал в течение нескольких часов через различную документацию, и искали высокого и низкого для кого-то другого, имеющего эту проблему, но, похоже, это не хорошо документированная проблема для кого-либо еще.
У кого-нибудь есть рекомендации, чтобы убедиться, что все поля находятся на уровне ROOT, а не вложены под именем переменной? Соответствующий код ниже.
findReplace: function(db, document, collection) {
var dbCollection = db.collection(collection);
var filter = document.name;
return new Promise(function(resolve, reject) {
dbCollection.updateOne({
"name" : filter
}, {
document
}, {
upsert: true
}, function(err, result) {
if (err) {
console.log('error', err)
reject(err);
}
console.log("Found Document and Upserted replacement Document");
resolve([{'status' : 'success'}]);
});
});
}
Отлично, спасибо! Я старался идти в ногу с изменениями ES6, но всегда что-то новое. Это всегда мелочи. – FouMedia