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);

要设置不存在的值,可以使用如下更新语句:

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 shell 中执行此操作:

> 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 回答