我正在尝试将多个用户批量插入数据库。出于测试目的,我想为每个单独的文档设置一个特定的ObjectId。由于某种原因,我无法插入有效的ObjectId。
例如:
var users = [
{
"_id": "56955ca46063c5600627f393",
"name": "John"
},
{
"_id": "56955ca46063c5600627f392",
"name": "Doe"
}
];
User.collection.insert(users, function(err, docs) {
if (err) {
console.log("Error");
} else {
console.log("Succes")
}
});
...插入mongoDB:
"_id" : "56955ca46063c5600627f393" //NOT ObjectId("56955ca46063c5600627f393")
当我尝试查询具有指定_id的文档时,这会导致各种问题。 我的原始代码工作得很好,但没有很好的多插入选项:
var user1 = new User({
"_id": "56955ca46063c5600627f393",
"name": "John"
});
var user2 = new User({
"_id": "56955ca46063c5600627f392",
"name": "Doe"
});
user1.save(function(err, response){
user2.save(function(err, response){
if (err) console.log(err);
else console.log("ok");
done();
})
});
在mongoDB中插入:
ObjectId("56955ca46063c5600627f393")
有没有办法在数据库中使用有效的ObjectId插入多个文档?
答案 0 :(得分:6)
根据文档Object in Mongoose和ObjectId in Mongo Shell,您应该执行以下操作:
var ObjectId = mongoose.Types.ObjectId,
users = [
{
"_id": new ObjectId("56955ca46063c5600627f393"),
"name": "John"
},
{
"_id": new ObjectId("56955ca46063c5600627f392"),
"name": "Doe"
}
];
User.collection.insert(users, function(err, docs) {
if (err) {
console.log("Error");
} else {
console.log("Succes")
}
});