car*_*son 32 c# mongodb mongodb-.net-driver
我如何将此mongo查询转换为C#中的Query.EQ语句?
db.users.find({name: 'Bob'}, {'_id': 1});
Run Code Online (Sandbox Code Playgroud)
换句话说,我不希望一切都返回到C# - 只需要我需要的一个元素,即_id.与往常一样,Mongo C#驱动程序教程没有帮助.
And*_*ich 39
更新:使用新驱动程序版本(1.6+),您可以使用linq避免字段名称硬编码:
var users = usersCollection.FindAllAs<T>()
.SetFields(Fields<T>.Include(e => e.Id, e => e.Name));
Run Code Online (Sandbox Code Playgroud)
你可以通过SetFieldsmongodb游标的方法来做到这一点:
var users = usersCollection.FindAllAs<T>()
.SetFields("_id") // include only _id
.ToList();
Run Code Online (Sandbox Code Playgroud)
默认情况下SetFields包括指定字段.如果您需要排除某些字段,您可以使用:
var users = usersCollection.FindAllAs<T>()
.SetFields(Fields.Exclude("_id")) // exclude _id field
.ToList();
Run Code Online (Sandbox Code Playgroud)
或者你可以一起使用它们:
var users = usersCollection.FindAllAs<T>()
.SetFields(Fields.Exclude("_id") // exclude _id field
.Include("name")) // include name field
.ToList();
Run Code Online (Sandbox Code Playgroud)
i3a*_*non 29
从驱动程序的v2.0开始,有一个新的async-only API.不应再使用旧的API,因为它是新API的阻止外观,不推荐使用.
目前推荐的包含或排除某些成员的Project方法是使用IFindFluent您获得的方法Find.
您可以传递lambda表达式:
var result = await collection.Find(query).Project(hamster => hamster.Id).ToListAsync();
Run Code Online (Sandbox Code Playgroud)
或者使用投影构建器:
var result = await collection.Find(query)
.Project<Hamster>(Builders<Hamster>.Projection.Include(hamster => hamster.Id))
.ToListAsync();
Run Code Online (Sandbox Code Playgroud)
var result = await collection.Find(query)
.Project<Hamster>(Builders<Hamster>.Projection.Exclude(hamster => hamster.FirstName).
Exclude(hamster => hamster.LastName))
.ToListAsync();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20423 次 |
| 最近记录: |