C# C查询基本BSON,使用LINQ只知道键和值
我有一个MongoDB集合,我想从中查询只知道密钥名称的文档。 我不能使用硬编码的基类,因为在运行时,键上的amount将随时间而变化。但作为用户,我会知道他们的名字 我试着这样做:C# C查询基本BSON,使用LINQ只知道键和值,c#,json,mongodb,linq,bson,C#,Json,Mongodb,Linq,Bson,我有一个MongoDB集合,我想从中查询只知道密钥名称的文档。 我不能使用硬编码的基类,因为在运行时,键上的amount将随时间而变化。但作为用户,我会知道他们的名字 我试着这样做: var collection = database.GetCollection<BsonDocument>(mongoCollectionName); List<BsonDocument> list = (from c in collection.AsQuer
var collection = database.GetCollection<BsonDocument>(mongoCollectionName);
List<BsonDocument> list = (from c in collection.AsQueryable<BsonDocument>()
where c.GetElement("serial").Value == 1
select c).ToList();
但是我得到了{document}.GetElementserial.Value不受支持
那么,有没有一种方法可以使用linq查询基本BSON
谢谢 是否有必要使用LINQ?我是说你不可能做这样的事
var collection = database.GetCollection<BsonDocument>(mongoCollectionName);
List<BsonDocument> list = collection.Find(Builders<BsonDocument>.Filter.Eq("serial", 1)).ToList();
甚至可以将其转换为字典。只需使viewModel与MongoDb中的属性相同即可。 要得到值为1的序列列,只需这样做
public class ViewModel {
.... model Properties goes here
}
var SerialNo = 1;
var collection = mongoDatabase.GetCollection<ViewModel>("name of your collection");
var builder = Builders<ViewModel>.Filter;
builder.Eq(x => x.serial, SerialNo );
如果BsonDocument类有一个Serial属性,那么如果我正确地理解您,您可以在c.Serial==1的位置执行此操作。在运行时,您只有名称serial。在这种情况下,可以改用生成器。看见不要以为你能用LINQ。正如上面写的,我没有所有的钥匙。键会随着时间的推移而改变,所以不能像上面写的那样硬编码基类。