当基于多种条件将json数据插入mongoDB时,我们将如何忽略重复项

时间:2018-09-05 11:49:32

标签: json node.js mongodb duplicates

[
{
    "RollNo":1,
    "name":"John",
    "age":20,
    "Hobby":"Music",
    "Date":"9/05/2018"
    "sal":5000
},

{
    "RollNo":2,
    "name":"Ravi",
    "age":25,
    "Hobby":"TV",
    "Date":"9/05/2018"
    "sal":5000
},
{
    "RollNo":3,
    "name":"Devi",
    "age":30,
    "Hobby":"cooking",
    "Date":"9/04/2018"
    "sal":5000
} 
]

上面是我需要插入到MongoDB中的JSON文件。我的mongoDB集合中已经有类似的JSON数据名为``Tests'',我必须忽略已经存在的记录 根据特定条件在mongoDB中使用。

  

[mongoDB中的RollNo == json中的RollNo需要在mongoDB中插入&& Hobby == json中的Hobby需要在mongoDB中插入&& Date == json中的日期需要插入]

如果此条件匹配,我需要插入,否则需要将数据插入DB

我正在使用nodejs。有人请帮我做。

2 个答案:

答案 0 :(得分:1)

如果您使用猫鼬,请使用https://codepen.io/pixel-lab/pen/zJdqvv?editors=1111

db.people.update(
  { RollNo: 1 },
  {
      "RollNo":1,
      "name":"John",
      "age":20,
      "Hobby":"Music",
      "Date":"9/05/2018"
      "sal":5000
  },
  { upsert: true }
)

但是要避免多次插入同一文档,请仅使用upsert:如果查询字段具有唯一索引,则为true。

答案 1 :(得分:0)

最简单,最安全的方法是使用复合索引。 您可以这样创建复合索引:

db.people.createIndex( { "RollNo": 1, "Hobby": 1, "Date" : 1 }, { unique: true } )

然后重复的插入将产生错误,您需要在代码中进行处理。