【发布时间】:2020-01-19 11:03:44
【问题描述】:
我正在使用 C# MongoDb.Driver(2.10) 从集合中获取文档:
MongoClient dbClient = new
MongoClient("mongodb://***");
IMongoDatabase db = dbClient.GetDatabase("***");
var collection = db.GetCollection<BsonDocument>("***");
Console.WriteLine( collection.Find(Builders<BsonDocument>.Filter.Empty).First());
这确实有效并发出了这个:
所以一切正常。
但现在我想尝试过滤 lockPolicyId.ToString()=="1" 的位置。(作为字符串,而不是作为数字)
所以我试过了:
var filter= Builders<BsonDocument>.Filter.Where(a=>a["lockPolicyId"].AsString=="1");
var t=collection.Find( filter ).First() ;
Console.Writeline(t);
显示此错误:
运算符“Equal”的操作数与参数不匹配 方法“op_Equality”。
我也试过了:
var filter= Builders<BsonDocument>.Filter.Where(a=>a["lockPolicyId"].ToString()=="1");
得到了这个错误:
{document}{lockPolicyId}.ToString() 不受支持。
现在,我明白为什么会这样了(Int 而不是 String)。
但还是
问题:
如何按 ToString 值过滤?
换句话说,要使这条线有效:
Builders<BsonDocument>.Filter.Where(a=>a["lockPolicyId"].AsString=="1")
【问题讨论】:
-
该列必须是另一个类。当您输入句号时,您给出了哪些选项?
-
@jdweng i.imgur.com/X3xQDqE.jpg
-
它是一个 MongoDB 对象。这些选择不是标准的网络库类型。
标签: c# mongodb mongodb-.net-driver