首页 > 解决方案 > 检查文档 C# 中是否存在特定字段

问题描述

我有一些发票数据保存在数据库中,我想检查具有特定名称的文件是否存在。

我正在使用以下代码

var filename = "extra.png";
MongoClient mongoclient = new MongoClient(db_server_ip);
MongoDatabaseBase myDB = (MongoDatabaseBase)mongoclient.GetDatabase(db_name);
IMongoCollection<Invoice> coll = myDB.GetCollection<Invoice>(collection_name);
var query = Query<Invoice>.EQ(u => u.Metadata.FileName, filename).ToBsonDocument();
var exist= coll.Find(query);

它正在返回类似的东西{find({ "Metadata.FileName" : "extra.png" })}.

在此处输入图像描述

我也试过这个

var filter = Builders<IConvertibleToBsonDocument>.Filter.Eq("FileName", filename);
 var result = coll.Find<IConvertibleToBsonDocument>(filter).ToList();

但它没有返回任何内容,列表计数为 0,即使 DB 中有这么多具有​​该文件名的文档。

这是我的 MongoDb 文档

在此处输入图像描述

无法弄清楚如何检查具有特定 FileName 的文档是否存在。

任何帮助都感激不尽。

谢谢。

标签: c#mongodb

解决方案


我认为您在和之间感到find困惑exists

find查找满足条件的文档 -name:a.png将查找name字段包含的文档,a.png同时$exists检查name任何文档中是否存在字段并返回。

如果您正在寻找以后的案例,您可以Query.ExistC#驱动程序中使用。否则检查 find 是否返回任何文档。


推荐阅读