E QUERY[thread1]SyntaxError:identifier在';mongodb';?

E QUERY[thread1]SyntaxError:identifier在';mongodb';?,mongodb,Mongodb,我的第一个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: '1

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

for(var i=1;i我只解释第一个查询和第二个查询之间的区别

ObjectId-是集合的唯一键。如果插入中没有提到它,mongodb会自动填充数据。因此,第一次查询在25次迭代中成功

然而,在第二个INSERT查询中,您试图填充该值。因此,您需要为
ObjectId
提供唯一键。否则,您将得到
E11000重复键错误集合
错误

下面的代码应该可以解决这个问题。下面的代码创建了ObjectId并在insert中设置了值

for (var i = 1; i <= 25; i++) { 
    id = ObjectId();
    db.AbcSchema.insert({x : i, from_email: '123@gmail.com',_id: id})
};

for(var i=1;我有没有试过为_idvalue(即59193333aed3eb391e396a5d)添加单引号?结果还是一样的…很好。是否接受答案?只需单击右键即可。谢谢。