Ich habe vor kurzem MongoDB als Quelle in SSIS (mit C# -Treiber) verwendet. Ich bin sehr neu mit MongoDB und C#. Wenn ich nicht verschachtelte Dokumente hatte, Aussagen wie unten für mich gearbeitet:
var query = Query.And(Query.Or(Query.GT("CreatedOn",maxUpdatedOnBSON), Query.GT("UpdatedOn", maxUpdatedOnBSON)),
Query.Or(Query.LT("CreatedOn", cutoffDate), Query.LT("UpdatedOn", cutoffDate)),Query.In("TestType", testTypes));
MongoCursor<BsonDocument> toReturn = collection.Find(query);
Nun, ich verschachtelte Dokumente wurde. Ich konnte Java-Skript erstellen, und es funktioniert mit MongoDB selbst
db.Test.aggregate([
{ $unwind : { path: "$Items",includeArrayIndex: "arrayIndex"} } ,
{ $match: { $and: [
{$or: [ { CreatedOn: { $gt: ISODate("2015-11-22T00:00:00Z")} }, {UpdatedOn: { $gt: ISODate("2015-11-22T00:00:00Z") } } ] },
{$or: [ { CreatedOn: { $lt: ISODate("2016-05-09T00:00:00Z")} }, {UpdatedOn: { $lt: ISODate("2016-05-09T00:00:00Z") } } ] }
] }
}])
In C#, wie ich sie verstehe, ich habe Aggregat verwenden statt finden, aber ich kann diesen Code in C# nicht übersetzen. Ich habe immer noch Auswahlkriterien und entspannen.
Können Sie bitte helfen?
Ich hoffe es. Werde diesen Ansatz versuchen, danke. Die Frage bezieht sich auf die MongoCursor -Syntax. MongoCursor toReturn = Sammlung.?; –
ICHV
Nun, wenn Sie einen Cursor auf Aggregation wollen, müssen Sie aggregargars oder aggregateoptions aggregate consturctor übergeben. oder bearbeitete Antwort oben. Man kann MongoCursor nicht herausholen. Sie können stattdessen IAsyncCursor abrufen. var aggCursor = grades.Aggregate() .Unwind (x => x ["Elemente"]) .Match (filter) .ToCursor(); – KaSh
Werfen Sie einen Blick auf diesen Link für detaillierte Informationen über asynccursor http://stackoverflow.com/questions/29682371/how-is-aniasynccursor-used-for-iteration-with-the-mongodb-c-sharp-driver? rq = 1 – KaSh