我正在使用MongoDB批量操作來插入文檔。MongoDB批量操作符,如果不存在則插入
我想要做的是插入,只要沒有找到文件 - 我不想更新,如果它被發現(即,upsert)。
任何想法如何做到這一點?
然而,即使在這種情況下:
var obj = {
item: 'test'
}
bulk.find({ item: {$ne : obj.item}}).upsert().updateOne(obj);
bulk.execute();
這似乎並不實際插入任何東西,如果沒有找到。
編輯:
我想更新此澄清多一點。
我試圖執行兩個操作,使用批量API,一個是更新,一個是插入。
文件看起來是這樣的:
{
item: 'test',
categories: [{
name: 'one',
attr: 'two'
}]
}
我想要做的是,如果沒有找到該項目的值,然後將OBJ。但是,如果找到,那麼如果categories.name
未找到,$push
類別對象爲categories
數組。如果找到文檔並且存在類別,則不要執行任何操作。從official doc
db.collection.update(query, update, {upsert: true})
例:
感謝您的回覆。我已經更新了我的問題以澄清更多。我試着去做你正在說的話,但我並不完全去那裏。非常感謝您的幫助。 – dzm
爲什麼ON EARTH有一個'.upsert()'?有時我想知道開發者如何設法藐視常識。直覺上,它不應該是'.updateOne({$ setOnInsert:obj},{upsert:true})'?一切都是一致的,除非總會有一件事讓開發人員的生活變得可怕。 – Rexford