MongoDB Select 中的多个逻辑条件
Multiple Logical Conditions in MongoDB Select
我需要根据多个条件
查询Collection
我的Collection
{
"_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);
但是我从上面的代码中得到了构建错误。请帮助我。我需要根据过滤器检查文档是否可用。
错误:
Error 1 'MongoDB.Driver.IMongoCollection'
does not contain a definition for 'Find' and the best extension method
overload
'MongoDB.Driver.IMongoCollectionExtensions.Find(MongoDB.Driver.IMongoCollection,
System.Linq.Expressions.Expression>,
MongoDB.Driver.FindOptions)' has some invalid
arguments .... ()
条件:
var token = new {
Token = ObjectId("575f4e2efd14481598fc0ebf"),
UserToken = "101"
};
我需要检查令牌数据是否存在以及 LastUpdate 应大于或等于(当前时间 - 15 分钟)的一个条件。
请帮助我。
Builder 的类型必须与 Collection 的类型相同。在你的情况下你有
作为 EducationMetaModel 的集合。和构建器作为 BsonDocument。保持一致。
从我在你的过滤器中看到的,你可以
var collection = _database.GetCollection<BsonDocument>("EmpLog");
此外,解析对象 ID 比将其作为字符串传递给过滤器要好。像这样
var filter = filterBuilder.Eq("_id", ObjectId.Parse("57623ed9adb381a5cc0d1994"))
我需要根据多个条件
查询Collection我的Collection
{
"_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);
但是我从上面的代码中得到了构建错误。请帮助我。我需要根据过滤器检查文档是否可用。
错误:
Error 1 'MongoDB.Driver.IMongoCollection' does not contain a definition for 'Find' and the best extension method overload 'MongoDB.Driver.IMongoCollectionExtensions.Find(MongoDB.Driver.IMongoCollection, System.Linq.Expressions.Expression>, MongoDB.Driver.FindOptions)' has some invalid arguments .... ()
条件:
var token = new {
Token = ObjectId("575f4e2efd14481598fc0ebf"),
UserToken = "101"
};
我需要检查令牌数据是否存在以及 LastUpdate 应大于或等于(当前时间 - 15 分钟)的一个条件。
请帮助我。
Builder 的类型必须与 Collection 的类型相同。在你的情况下你有
作为 EducationMetaModel 的集合。和构建器作为 BsonDocument。保持一致。
从我在你的过滤器中看到的,你可以
var collection = _database.GetCollection<BsonDocument>("EmpLog");
此外,解析对象 ID 比将其作为字符串传递给过滤器要好。像这样
var filter = filterBuilder.Eq("_id", ObjectId.Parse("57623ed9adb381a5cc0d1994"))