0
我想有可能在運行時添加查詢。我的解決方案與「老」司機是這樣的。MongoDB在運行時添加查詢與C#驅動程序> 2.0
// A List does hold the queries
List<IMongoQuery> QueryConditionList = new List<IMongoQuery>();
void AddQuery(string sType, string sField, string sValue)
{
// I can add of course several Queries
if (sType == "EQ")
QueryConditionList.Add(Query.EQ(sField, sValue));
else if (sType == "GT")
QueryConditionList.Add(Query.GT(sField, sValue));
else if (sType == "LT")
QueryConditionList.Add(Query.LT(sField, sValue));
}
// At some point you can execute the queries
void ExecuteQuery()
{
// Combine all to on "And" Query ("Or" would be possible as well)
IMongoQuery query = Query.And(QueryConditionList);
// Then I can get my cursor with a Find
MongoCursor<BsonDocument> mc = MoCollection.Find(query);
// Do anything with the cursor...
}
這確實工作得很好。但我不知道如何用新的語法來做到這一點。 我所有的方法都不是真正的動態。像:
var builder = Builders<BsonDocument>.Filter;
var filter = builder.Eq(Field1, Value1) & builder.Eq(Field2, Value2);
我想我可以添加一些更多的過濾器一樣
filter.add(builder.Eq(Field3, Value3)); // But of course I can't
builder.And的存在和工作方式與Query.And完全相同。 –
謝謝,但它不是'我'所缺少的,它是在運行時將查詢列表添加到過濾器的可能性。 –
https://github.com/mongodb/mongo-csharp-driver/blob/master/src/MongoDB.Driver/FilterDefinitionBuilder.cs#L81這需要IEnumerable的FilterDefinitions。也許一個你不能做的例子會有所幫助。 –