私はmongo
からレコードを読み取ると、このレコードからの情報に基づいて新しいフィールドを追加するために必要な(ので、私はすぐにdb.my.update()
を行うことができませんでした)、私はこのコードを思い付いた:MongoDBは既に持っているレコードを更新するdb.updateの最も簡単な方法ですか?
var id = '5711298cf896b24fa1529d8e';
var cursor = db.my.find({_id: ObjectId(id)})
if (cursor.count() > 0) {
var rec = cursor.next();
var id = rec._id.valueOf()
db.my.update({_id: ObjectId(id)}, {$set: {newField: 777}});
}
それは動作しますが、Iそれを見て、本当にクリーンな方法ですか? 私は
var id = '5711298cf896b24fa1529d8e';
var cursor = db.my.find({_id: ObjectId(id)})
if (cursor.count() > 0) {
var rec = cursor.next();
rec.newField = 777;
db.my.update(rec); // or even rec.save();
}
のようなものを期待し、私は何かが足りないのですか?
'db.my.update({_ id:ObjectId( '5711298cf896b24fa1529d8e')}、{$ set:{newField:777}}))'; – chridam
@chridam私は私の質問の最初の行でそれに答えました。 – SmxCde
最初にカーソルを作成する必要はありません。[** 'update' **](https://docs.mongodb.org/manual/reference/method/db.collection.update/#db-コレクション更新)演算子は、更新の選択基準としてクエリを使用します。 [** 'find()' **](https://docs.mongodb.org/manual/reference/method/db.collection.find/#db.collection.find)メソッドと同じクエリセレクタは、カーソルが必要ないように利用可能です – chridam