检查MongoDb中列的存在

时间:2018-09-13 04:53:38

标签: c# mongodb mongodb-.net-driver

我要求创建一个可以通过传递MongoDb集合的列名和相应值来更新MongoDb集合的函数。我编写的函数(现在处于测试阶段)将在更新前接受列名,值,集合名等。我想检查给定的集合是否存在以及该集合中提供的列名称是否存在,如果一切都很好,请更新该集合。我能够检查某个集合是否存在,但对Columns这样做却失败了。 我在Mongodb网站上找到了 { item : { $exists: false } }  但我没有找到执行此操作的确切C#代码。 c#是否可以检查MongoDb中是否存在列?我现在正在使用MongoDb 4.0版。

注意:我没有任何强类型数据,因为该函数不知道集合及其所保存的数据类型。目标是接受列名和值,并更新传递给它的那些字段。

2 个答案:

答案 0 :(得分:0)

如果要查找属性不存在的文档,可以使用以下代码:

var modelsWithoutItem = collection.Find(
    Builders<DocModel>.Filter.Exists(m => m.Item, false)
);

或者如果您没有强类型数据:

var modelsWithoutItem = collection.Find(
    Builders<BsonDocument>.Filter.Exists("item", false)
);

答案 1 :(得分:0)

       var fieldExists = _collection.Find(Builders<BsonDocument>.Filter.Exists("item",true));
       if (fieldExists.CountDocuments() > 0){
               // yes document with this field is available
       }else{
               // No documents with that field name exists
       }

@john谢谢您的快速回复,有了一些更新,我得到了我想要的东西。