我需要根据多个条件查询集合
我的收藏
{
"_id" : ObjectId("575f4e2efd14481598fc0ebf"),
"Emp_ID" : "100",
"LastUpdate" : ISODate("2016-06-13T18:30:00.000Z")
},
{
"_id" : ObjectId("575f4e2efd14481598fc0ebf"),
"Emp_ID" : "101",
"LastUpdate" : ISODate("2016-06-14T06:33:00.000Z")
}, ... ()
现在我需要根据以下条件检查文档是否存在
我的C#代码:
private static IMongoClient _client;
private static IMongoDatabase _database;
_client = new MongoClient();
_database = _client.GetDatabase("Test");
var collection = _database.GetCollection<EducationMetaModel>("EmpLog");
var filterBuilder = Builders<BsonDocument>.Filter;
var filter = filterBuilder.Eq("_id", token.Token)
& filterBuilder.Eq("Emp_ID", token.UserToken)
& filterBuilder.Gte("LastUpdate", DateTime.UtcNow.Add(new TimeSpan(0, -15, 0)));
var cItem = collection.Find(filter);
但是我从上面的代码中得到了构建错误。请帮助我。我需要根据过滤器检查文档是否可用。
错误:
错误1&#39; MongoDB.Driver.IMongoCollection&#39; 不包含&#39;查找&#39;的定义和最好的扩展方法 超载 &#39; MongoDB.Driver.IMongoCollectionExtensions.Find(MongoDB.Driver.IMongoCollection, System.Linq.Expressions.Expression&gt;中 MongoDB.Driver.FindOptions)&#39;有一些无效的 参数....()
条件:
var token = new {
Token = ObjectId("575f4e2efd14481598fc0ebf"),
UserToken = "101"
};
我需要检查令牌数据是否存在以及LastUpdate应该大于或等于(当前时间 - 15分钟)的一个条件。
请帮助我。
答案 0 :(得分:0)
Builder类型必须与Collection类型相同。在你的情况下,你有
收集为EducationMetaModel。和构建器作为BsonDocument。保持这些一致。
从我在过滤器中看到的内容,您可以拥有
var collection = _database.GetCollection<BsonDocument>("EmpLog");
另外,您最好解析对象ID,而不是将其作为字符串传递给过滤器。像这样的东西
var filter = filterBuilder.Eq("_id", ObjectId.Parse("57623ed9adb381a5cc0d1994"))