我有一个这样的文档集:
{
"_id" : ObjectId("4fb21439f31dfd122ce39c4a"),
"Name" : "Freelander 2",
"Manufacture" : "Landrover"
}
我正在使用C#驱动程序,并想检查“名称”字段是否存在;如果没有,我需要从代码更新它。有人可以帮忙吗?请分享示例代码,因为我是mongoDB的新手。
答案 0 :(得分:3)
您可以使用 exists 运算符:
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);
答案 1 :(得分:1)
我假设您要将没有名称字段的所有文档更新为相同的值。你可以在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);