E QUERY [thread1] SyntaxError:标识符在'mongodb'中的数字文字@(shell)之后立即启动?

时间:2017-05-15 05:33:44

标签: mongodb

我的第一个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

1 个答案:

答案 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})
};