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版本。这不起作用。我在发帖之前已经试过了。这将从文档中选择所有字段。我找到了解决方案。这是不同的,但我要感谢你让我进一步思考解决方案。