Den önskade produktionen kan produceras bara genom aggregering:
db.collection.aggregate([
{$match : { empId : '999', 'empActivity.Stamp' : { $lte : ISODate("2015-01-09T12:33:39.927Z")} }},
{$unwind : '$empActivity'},
{$match : { empId : '999', 'empActivity.Stamp' : { $lte : ISODate("2015-01-09T12:33:39.927Z")} }},
{$group: { _id: '$empId', empActivity: { $addToSet: '$empActivity' }}}
])
i c#:
var args = new AggregateArgs
{
Pipeline = new List<BsonDocument>
{
BsonDocument.Parse("{$match : { empId : '999', 'empActivity.Stamp' : { $lte : ISODate('2015-01-09T12:33:39.927Z')} }}"),
BsonDocument.Parse("{$unwind : '$empActivity'}"),
BsonDocument.Parse("{$match : { empId : '999', 'empActivity.Stamp' : { $lte : ISODate('2015-01-09T12:33:39.927Z')} }}"),
BsonDocument.Parse("{$group: { _id: '$empId', empActivity: { $addToSet: '$empActivity' }}}"),
}
};
var result = collection.Aggregate(args).ToList();