【问题标题】:Update field from c# driver从 c# 驱动程序更新字段
【发布时间】:2012-05-18 05:54:13
【问题描述】:

我有一个这样的文档集合:

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

我使用的是C#驱动,想检查“名称”字段是否存在;如果没有,我需要从代码中更新它。有人可以帮忙吗?请分享示例代码,因为我是 mongoDB 的新手。

【问题讨论】:

  • 检查“名称”是否存在?

标签: c# mongodb indexing


【解决方案1】:

您可以使用 exists 运算符:

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

【讨论】:

    【解决方案2】:

    我假设您想将所有没有名称字段的文档更新为相同的值。您可以像这样在 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 2017-12-15
      • 2012-12-09
      • 2014-06-20
      • 1970-01-01
      相关资源
      最近更新 更多