0

架构:

 /* 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();
4

2 回答 2

0

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

另一种方法是仅用户更新

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

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

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

于 2012-05-18T14:39:49.113 回答
0

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

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

于 2012-05-18T18:46:27.633 回答