2017-09-17 12 views
0

私はドキュメントで見ているとおり、これを正しくやっていますが、なぜドキュメントを更新していないのか分かりません。 http://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#bulkWriteMongoDB一括書込みが更新されない

const updates = [ 
{ 
    "updateOne": { 
    "filter": { 
     "Item": { 
     "$oid": "59bdbf4f857c5b78b3a4c400" 
     }, 
     "Path": "ShortDescription" 
    }, 
    "update": { 
     "$set": { 
     "Value": "100 knotzzzz" 
     } 
    } 
    } 
} 
] 

await mongoose.connection.db.collection('productdata').bulkWrite(updates); 

私は何か間違っていますか?

答えて

0

私はinitializeUnorderedBulkOpメソッドを使用していますが、動作していますが、なぜバルク書き込みが機能しなかったのかを知りたいと思います。ここで私のために働いているコードです。

const bulk = mongoose.connection.db.collection('productdatas').initializeUnorderedBulkOp(); 

    data.forEach(([Path, Value]) => { 
    bulk.find({ Item: new ObjectID(_id), Path }).updateOne({ 
     $set: { 
     Value, 
     }, 
    }); 
    }); 

    await bulk.execute(); 
+0

' "アイテム" ので、それは動作しませんでした:{ "$のOID": "59bdbf4f857c5b78b3a4c400は"}'実際には有効ではありません。代わりに、あなたが行ったように 'ObjectId'にキャストします。 「mongooseメソッド」として['.bulkWrite()'](http://mongoosejs.com/docs/api.html#model_Model.bulkWrite)を使用すると、実際にスキーマに基づいて「オートキャスト」を行うことに注意してください。 'Item 'の実際のスキーマが' Item:Schema.Types.ObjectId'として設定されている限り、 '' Item' ': "59bdbf4f857c5b78b3a4c400"正しいタイプに設定されていない場合、自動キャストは失敗します。 –

+0

また、**常に**メソッドの結果をチェックする必要があります。そして、それはあなたにかなり明確なヒントを与えるべき不正確な照会値のために 'nMatched'を0として表示すべきです。 –