2017-05-15 13 views
3

私の最初のmongodbクエリは完璧に実行されていますが、2番目の_idフィールドはいくつかのバグを解決していますか?E QUERY [スレッド1] SyntaxError:識別子は 'mongodb'の数値リテラル@(シェル)の直後に始まりますか?

for (var i = 1; i <= 25; i++){db.mediafiles.insert({x : i,from_email: '[email protected]'})} 
WriteResult({ "nInserted" : 1 }) 

for (var i = 1; i <= 25; i++){db.mediafiles.insert({x : i,from_email: '[email protected]',_id:59193333aed3eb391e396a5d})} 
E QUERY [thread1] SyntaxError: identifier starts immediately after numeric literal @(shell):1:90 
+0

_id値(例:59193333aed3eb391e396a5d)に一重引用符を追加してみましたか? – notionquest

+0

まだ同じ結果... – Jagadeesh

答えて

1

最初のクエリと2番目のクエリの違いについて説明します。

https://docs.mongodb.com/manual/reference/method/ObjectId/

のObjectId - コレクションの一意のキーです。 INSERTに記述されていない場合、mongodbは自動的にデータを入力します。したがって、最初のクエリは25回の反復で成功します。

ただし、2番目のINSERTクエリでは、値を入力しようとしています。だから、ObjectIdのユニークなキーを提供する必要があります。そうしないと、E11000 duplicate key error collectionエラーが発生します。

以下のコードで問題を解決する必要があります。以下のコードはObjectIdを作成し、挿入の値を設定します。

for (var i = 1; i <= 25; i++) { 
    id = ObjectId(); 
    db.AbcSchema.insert({x : i, from_email: '[email protected]',_id: id}) 
}; 
+0

解決済み:)その作業... – Jagadeesh

+0

良い。答えを受け入れますか?右のボタンをクリックするだけです。ありがとう。 – notionquest

関連する問題