我的第一个 mongodb 查询执行得很好,而第二个 _id 字段产生了一些错误?
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
最佳答案
我将只解释第一个查询和第二个查询之间的区别。
https://docs.mongodb.com/manual/reference/method/ObjectId/
ObjectId - 是集合的唯一键。如果在 INSERT 中没有提到,mongodb 会自动填充数据。因此,第一个查询成功进行了 25 次迭代。
然而,在第二个 INSERT 查询中,您正试图填充值。因此,您需要为 ObjectId
提供唯一键。否则,您将得到 E11000 duplicate key error collection
错误。
下面的代码应该可以解决这个问题。以下代码创建了 ObjectId 并在插入中设置了值。
for (var i = 1; i <= 25; i++) {
id = ObjectId();
db.AbcSchema.insert({x : i, from_email: '123@gmail.com',_id: id})
};
关于mongodb - E 查询 [thread1] 语法错误 : identifier starts immediately after numeric literal @(shell) in 'mongodb' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43972138/