Mongodb

根據特定欄位在集合中插入許多文件,但僅插入唯一元素

  • May 20, 2020

我似乎無法在任何地方找到答案。我需要以下內容:

給定具有以下結構的對像數組:

   {
      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

引用自:https://dba.stackexchange.com/questions/267299