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

本文关键字:字段 文档 中文 MongoDb 集合 更新 | 更新日期: 2023-09-27 18:34:32

Schema:

 /* 0 */
    {
      "_id" : ObjectId("4fb6376ef31dfd11c41c7fd0"),
      "Name" : "A",
      "Val" : "#rt45"
    }
    /* 1 */
    {
      "_id" : ObjectId("4fb655aff31dfd11c41c7fd1"),
      "Name" : "B",
      "Val" : "#gh46"
    }
    /* 2 */
    {
      "_id" : ObjectId("4fb65626f31dfd11c41c7fd2"),
      "Name" : "C",
      "Val" : "#rt67"
    }

我必须将数据插入"名称",并想查询它是否应该检查字段"名称"(这里是 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();

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

您可以先调用 Find 并查看是否已经存在具有相同 Name 值的文档,然后仅在 Find 未返回任何内容时才调用 Insert。但是,如果多个进程或线程正在做同样的事情,这将不安全。

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

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

另一种方法是仅用户更新

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

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

如果您尝试编写一个逐步示例来说明您要做的事情(用简单的英语(,我也许可以为 C# 编写一个示例。