更新MongoDb集合中文档的字段值

时间:2012-05-18 14:12:52

标签: c# mongodb

架构:

 /* 0 */
    {
      "_id" : ObjectId("4fb6376ef31dfd11c41c7fd0"),
      "Name" : "A",
      "Val" : "#rt45"
    }

    /* 1 */
    {
      "_id" : ObjectId("4fb655aff31dfd11c41c7fd1"),
      "Name" : "B",
      "Val" : "#gh46"
    }

    /* 2 */
    {
      "_id" : ObjectId("4fb65626f31dfd11c41c7fd2"),
      "Name" : "C",
      "Val" : "#rt67"
    }

我必须将数据插入" Name"并且想要查询是否应该检查字段的值是否存在" Name"(此处为A,B,C)是否存在,如果需要从插入中跳过 希望有人可以帮忙,我在c#驱动程序请分享示例代码提前致谢。 我一直在这个

IMongoQuery query = Query.Exists("_id", true);
                var fields = Fields.Include("Name");
                var result = collection.Find(query).SetFields(fields).SetLimit(1).FirstOrDefault();

2 个答案:

答案 0 :(得分:0)

FindAndModify是MongoDB中一次查询和更新的方式。

另一种方法是仅用户更新

Collection.Update(Query. ..., Update.Set())

如果查询找不到新帖子的所有信息,则第二个也可以创建帖子。

如果您尝试逐步编写您要执行的操作示例(用简单的英语),我可以为C#编写一个示例。

答案 1 :(得分:0)

您可以先调用“查找”并查看是否已存在具有相同“名称”值的文档,然后仅在“查找未返回任何内容”时调用“插入”。如果多个进程或线程做同样的事情,这将是不安全的。

另一种方法是在Name上创建一个唯一索引,然后执行Insert。如果已存在具有相同Name值的另一个文档,则Insert将失败。