2

私はこのようなドキュメントコレクションを持っています:

{
    "_id" : ObjectId("4fb21439f31dfd122ce39c4a"),
    "Name" : "Freelander 2",
    "Manufacture" : "Landrover"
}

C#ドライバーを使用していますが、[名前]フィールドが存在するかどうかを確認したいと思います。そうでない場合は、コードから更新する必要があります。誰かがこれを手伝ってくれる?私はmongoDBの初心者なので、サンプルコードを共有してください。

4

2 に答える 2

3

存在演算子を使用できます。

db.myCollection.find( { Name: { $exists: true } } );

C#ドライバーを使用すると、同等のものは次のようになります。

IMongoQuery query = Query.Exists("Name", true)
var results = myCollection.Find(query);

値が存在しない場合に値を設定するには、次のようなUpdateステートメントを使用できます。

IMongoQuery query = Query.Exists("name", true);
IMongoUpdate update = Update.Set("Name", "newvalue");
myCollection.Update(query, update);
于 2012-05-18T05:59:27.687 に答える
1

Nameフィールドを持たないすべてのドキュメントを同じ値に更新することを想定しています。次のように、mongoシェルでこれを行うことができます。

> db.test.update({Name:{$exists:false}}, {$set:{Name:"xyz"}}, false, true)

次のようにC#でも同じことができます。

var query = Query.Exists("Name", false);
var update = Update.Set("Name", "xyz");
collection.Update(query, update, UpdateFlags.Multi);
于 2012-05-18T18:52:13.697 に答える