Mongodb
根據特定欄位在集合中插入許多文件,但僅插入唯一元素
我似乎無法在任何地方找到答案。我需要以下內容:
給定具有以下結構的對像數組:
{ link: 'some-link', rating: 25, otherFields: '..', ... }
我想將它們插入我的收藏中。所以我只想做 insertMany… 但我只想插入數組中唯一的那些元素,這意味著我不想插入欄位“連結”的對像已經在我的集合中。
意思是如果我的收藏有以下文件:
{ _id: 'aldnsajsndasd', link: 'bob', rating: 34, } { _id: 'annn', link: 'ann', rating: 45 }
我使用以下數組執行“更新/插入”:
[{ link: 'joe', rating: 10 },{ link: 'ann', rating: 45 }, { link: 'bob', rating: 34 }, { link: 'frank', rating: 100 }]
只有文件:
{ link: 'frank', rating: 100 } { link: 'joe', rating: 10 }
將插入我的收藏中
首先在 field 上添加一個唯一約束
link
。db.collection.createIndex({"link": 1}, {unique: true})
然後在不使用 insertMany 的情況下,使用 javscript 函式插入列表的每個文件。
最後刪除我們不再需要的索引(唯一約束)。
db.collection.dropIndex("link_1") // or your index name