Mongodb 如何使用切片运算符并指定通过查找查询返回的字段?

Mongodb 如何使用切片运算符并指定通过查找查询返回的字段?,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我有这个收藏: Books [ { _id: ObjectId(1), Title: Book1, Price: 100, Tags: ["A", "B", "C"] }, { _id: ObjectId(2), Title: Book2, Price: 200, Tags: ["C", "D", "E"] } ] I want to return only _id field and the first element from the Tags arra

我有这个收藏:

Books
[
{
  _id: ObjectId(1),
  Title: Book1,
  Price: 100,
  Tags: ["A", "B", "C"] 
},
{
  _id: ObjectId(2),
  Title: Book2,
  Price: 200,
  Tags: ["C", "D", "E"] 
}
]

I want to return only _id field and the first element from the Tags array

So my result should look like this:

Books
[
{
  _id: ObjectId(1),
  Tags: ["A"] 
},
{
  _id: ObjectId(2),
  Tags: ["C"] 
}
]
标签数组可以很大,我只需要知道第一个位置是什么

var query = Query.EQ(<My condition here>);
var slice = Fields.Slice("Tags", 1);

return Books.FindAs<MyBookClass>(query).SetFields(slice).ToList(); <- Selects all fields from the document
return Books.FindAs<MyBookClass>(query).SetFields(slice).SetFields("_id", "Tags").ToList(); <- I am get _id but I also everything from the Tags array

This works nicely in command shell. How do I implement this using CSharp driver?
> db.Books.find({ "Price" : 100},{Tags:{$slice:1}, _id:1})

有没有一种方法可以指定我想要读取的片段和字段?

下面是我的工作方式,使用MongoShell的Javascript本机代码

你可以翻译成C

db.books.find({},{"Tags":{$slice:1},_id:1})
编辑

这个怎么样

var query = Query.EQ(<My condition here>);
var slice = Fields.Slice("Tags", 1);
var fields = Fields.Include("_id","Tags"); 
return Books.FindAs<MyBookClass>(query).SetFields(fields).SetFields(slice).ToList(); 

抱歉,我刚刚看到您已经知道它的javascript版本。这不起作用。我在发帖之前已经试过了。这将从文档中选择所有字段。我找到了解决方案。这是不同的,但我要感谢你让我进一步思考解决方案。