更新方法无效

时间:2016-04-14 09:37:14

标签: c# mongodb

尝试使用MongoDB,编写了一个更新方法,该方法将名称作为参数,如果存在,则将其替换为Oneyl。

public void updateTry(string name) {
            var mongoClient = new MongoClient("mongodb://localhost");
            var database = mongoClient.GetDatabase("football");
            var coll = database.GetCollection<BsonDocument>("Footballers");

            var documents = coll.Find(new BsonDocument()).ToList();
            for (int i = 0; i < documents.Count(); i++) {
                if (documents[i].ContainsValue(name)) {
                    documents[i].Set("Name", "Oneyl");
                }
            }
        }

我试图使用一个简单的c#结构来实现我的目标,但欢迎任何mongodb输入,例如查询,但如果您决定提供一些查询,请解释它们。 我不确定我是否正确使用了Set方法。 “名称”是数据库中的实际字段。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码,并且也是完美的我需要知道您的文档格式或结构,以便为您提供更新文档的示例

       MongoClient _client = new MongoClient();
        _database = _client.GetDatabase("Store");
        var collection = _database.GetCollection<BsonDocument>("Customers");
        var filter = Builders<BsonDocument>.Filter.Eq("_id", new BsonObjectId(new ObjectId(_id)));
        var update = Builders<BsonDocument>.Update.Set("CompanyName", CompanyName_str)
            .Set("ContactName", ContactName_str)
            .Set("ContactTitle", ContactTitle_str)
            .Set("Address", Address_str)
            .Set("City", City_str)
            .Set("Region", Region_str)
            .Set("PostalCode", PostalCode_str)
            .Set("Country", Country_str)
            .Set("Phone", Phone_str);
        try
        {
            collection.UpdateOne(filter, update);
            IdentityHelper.RedirectToReturnUrl(Request.QueryString["ReturnUrl"], Response);
        }
        catch (MongoWriteException mwx)
        {
            if (mwx.WriteError.Category == ServerErrorCategory.DuplicateKey)
            {
                // mwx.WriteError.Message contains the duplicate key error message
            }
        }