Question 1:
The easiest way is:
var query; // your query
var slice = Fields.Slice("arrayField", -10);
var cursor = collection.Find(query).SetFields(slice);
foreach (var document in cursor) {
// process document
}
You can also create the slice specification directly if you prefer:
var slice = new BsonDocument("arrayField", new BsonDocument("$slice",
-10));
Question 2:
The easiest way is:
var query; // your query
var fields = Fields.Include("field1", "field2", ...);
var cursor = collection.Find(query).SetFields(fields);
foreach (var document in cursor) {
// process document
}
You can also create the slice specification directly if you prefer:
var fields = new BsonDocument { { "field1", 1 }, { "field2",
1 }, ... };