2

Mongo DB の行を更新しようとしています。users という名前のコレクションがあります

db.users.find()

{ "_id" : ObjectId("50e2efe968caee13be412413"), "username" : "sss", "age" : 32 }

Erinamodobo というユーザー名で行を更新し、年齢を 55 に変更しようとしています。

以下の方法を試しましたが、うまくいきません。

db.users.update({ "_id": "50e2efe968caee13be412413" }, { $set: { "username": "Erinamodobo" } });

どこが間違っているのか教えてください??

4

3 に答える 3

2

mongo シェルを使用している場合は、_id を ObjectId として渡します。それ以外の場合は、既存のユーザーが見つかりません。

db.users.update({"_id": ObjectId("50e2efe968caee13be412413")},
     { "$set" :
          { "username": "Erinamodobo", "age" : "55" }})
于 2013-01-20T16:32:45.147 に答える
1

このクエリでは、名前自体を更新しています。

更新の構文は次のとおりです。

 db.COLLECTION.update( {query}, {update}, {options} )

ここでquery、更新するレコードを選択し、更新updateするフィールドの値を指定します。

したがって、あなたの場合、正しいコマンドは次のとおりです。

 db.users.update({ "name": "Erinamodobo" }, { $set: { "age": 55 } });

ただし、非常によく書かれている mongodb のドキュメントを読むことをお勧めします ( http://docs.mongodb.org/manual/applications/update/ ) 。

于 2013-01-20T16:25:02.443 に答える
0

@WiredPrairie の延長として、彼は正しい答えを述べていますが、実際には説明していません。

は文字列ではありません。OjbectId実際にはObjectso で検索するため、同じタイプの を指定Objectする必要があります。つまり、ここでは:OjbectObjectId

db.users.update({ "_id": ObjectId("50e2efe968caee13be412413") }, { $set: { "username": "Erinamodobo" } });

Dateから使用する特定の BSON タイプについても同じことが言えます。タイプの s でNumberLongパラメーターをラップする必要があります。Object

于 2013-01-20T16:37:53.487 に答える