Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
node.js检查mongoose中的重复值_Node.js_Express_Mongoose_Duplicates - Fatal编程技术网

node.js检查mongoose中的重复值

node.js检查mongoose中的重复值,node.js,express,mongoose,duplicates,Node.js,Express,Mongoose,Duplicates,现在我想将json数据保存到mongoose中,但必须过滤重复的值 my_json = [ {"name":"michael","age":21,"sports":"basketball"}, {"name":"nick","age":31,"sports":"golf"}, {"name":"joan","age":41,"sports":"soccer"}, {"name":"henry","age":51,"sports":"baseball"}, {"name":"j

现在我想将json数据保存到mongoose中,但必须过滤重复的值

my_json = [
  {"name":"michael","age":21,"sports":"basketball"},
  {"name":"nick","age":31,"sports":"golf"},
  {"name":"joan","age":41,"sports":"soccer"},
  {"name":"henry","age":51,"sports":"baseball"},
  {"name":"joe","age":61,"sports":"dance"},
];
数据库数据为:

{
   "name":"joan","age":41,"sports":"soccer"
}
是否有一些特定的方法避免重复数据直接插入mongoose?除“joan”值外,它可能保存了4个值

有一次我想尝试使用“for statement”,这很好。 然而,我只想做一个简单的代码来说明在各种可能的代码中可能发生的情况

for(var i = 0; i < my_json.length; i++){
    // to check out duplicate value
    db.json_model.count({"name":my_json[i].name}, function(err, cat){
        if(cat.length == 0){
           my_json_vo.savePost(function(err) {

           });
        }
    })
};
for(var i=0;i
如您所见,无论值是否重复,我都需要使用count方法。我不想用计数法,但要使它更简单


您能给我一个建议吗?

您可以在以下内容中将字段标记为
唯一的

此外,您还可以将
name
字段的索引添加到数据库中:

db.js_model.createIndex( {"name": 1}, { unique: true, background: true } );

然后,如果将要求具有相同名称的新实体保存,则mongo将不保存该实体,并响应错误。

除了@Alex answer关于在名称字段中添加唯一键之外

您可以使用insertMany()方法,并将ordered参数设置为 错误。像这样

此查询将成功运行并插入唯一文档,并且 在成功插入之后生成错误。所以你会来的 知道有重复的记录,但现在在数据库中,所有 记录是独一无二的

参考文献

db.js_model.createIndex( {"name": 1}, { unique: true, background: true } );
let my_json = [
  {"name":"michael","age":21,"sports":"basketball"},
  {"name":"nick","age":31,"sports":"golf"},
  {"name":"joan","age":41,"sports":"soccer"},
  {"name":"henry","age":51,"sports":"baseball"},
  {"name":"joe","age":61,"sports":"dance"},
];
User.insertMany(my_json ,{ordered :false});