node.js检查mongoose中的重复值
现在我想将json数据保存到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
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});