我的第一个mongodb查询是否正常执行,而第二个_id字段正在创建一些bug?
for (var i = 1; i <= 25; i++){db.mediafiles.insert({x : i,from_email: '123@gmail.com'})}
WriteResult({ "nInserted" : 1 })
for (var i = 1; i <= 25; i++){db.mediafiles.insert({x : i,from_email: '123@gmail.com',_id:59193333aed3eb391e396a5d})}
E QUERY [thread1] SyntaxError: identifier starts immediately after numeric literal @(shell):1:90
答案 0 :(得分:3)
我将解释第一个和第二个查询之间的区别。
https://docs.mongodb.com/manual/reference/method/ObjectId/
ObjectId - 是集合的唯一键。如果在INSERT中没有提到,mongodb会自动填充数据。因此,第一次查询成功进行了25次迭代。
然而,在第二个INSERT查询中,您尝试填充该值。因此,您需要为ObjectId
提供唯一键。否则,您将收到E11000 duplicate key error collection
错误。
以下代码应该可以解决问题。下面的代码创建了ObjectId并在insert中设置了值。
for (var i = 1; i <= 25; i++) {
id = ObjectId();
db.AbcSchema.insert({x : i, from_email: '123@gmail.com',_id: id})
};