使用 C# 驱动程序在 mongodb 中执行映射
Performing Map in mongodb with C# driver
我有一个要映射的对象(例如 Person
)。
我想执行一些非常像 LINQ 的 Select 方法和 return IEnumerable<ObjectId>
而不是 IEnumerable<Person>
.
的事情
我还发现我一直在寻找的方法在 mongodb 术语中称为 map
。
是否有任何可与 C# 驱动程序一起使用的等效项?
Mongo 示例: 我说的 mongo 函数是
db.getCollection('Persons').find({}).map( function(p) { return p._id; } );
注:我已经知道了
var persons= await personsCollection.Find(_ => true).ToListAsync();
return persons.Select(p=>p._id);
但我正在寻找一些东西 "tidier",它已经是 mongodb 驱动程序的一部分。
编辑
我正在寻找预测之外的东西。
我的代码目前看起来像这样:
var personsCursor= personsCollection.Find(_ => true);
var personsProjection = personsCursor.Project<Person>(Builders<Person>.Projection.Include(p => p._id));
var personsIds = await personsProjection.ToListAsync();
return personsIds .Select(p => p._id.ToString());
为此,您可以使用 Projection;
来自文档:
Projecting Fields
Many times we don’t need all the data contained in a document. The
Projection builder will help build the projection
parameter for the find operation. Below we’ll exclude the “_id” field
and output the first matching document:
var projection = Builders<BsonDocument>.Projection.Exclude("_id");
var document = await collection.Find(new BsonDocument()).Project(projection).FirstAsync();
Console.WriteLine(document.ToString());
然后,在您自己的投影中,您可以指定需要哪些字段 return。如果你去上面的 link,你可以找到一些关于投影和 mongo c# 驱动程序的文档。
编辑:
此外,您可以使用projection builder
来指定您需要的return:
var projection = Builders<BsonDocument>.Projection.Expression(d => d._id);
// and then put this projection to your query
var items = await collection.Find(new BsonDocument()).Project(projection).ToListAsync();
现在,每个项目只应表示为 _id
。
希望对您有所帮助。
在C#中映射属性,需要验证官方文档mongodb
https://mongodb.github.io/mongo-csharp-driver/2.7/reference/bson/mapping/
我有一个要映射的对象(例如 Person
)。
我想执行一些非常像 LINQ 的 Select 方法和 return IEnumerable<ObjectId>
而不是 IEnumerable<Person>
.
我还发现我一直在寻找的方法在 mongodb 术语中称为 map
。
是否有任何可与 C# 驱动程序一起使用的等效项?
Mongo 示例: 我说的 mongo 函数是
db.getCollection('Persons').find({}).map( function(p) { return p._id; } );
注:我已经知道了
var persons= await personsCollection.Find(_ => true).ToListAsync();
return persons.Select(p=>p._id);
但我正在寻找一些东西 "tidier",它已经是 mongodb 驱动程序的一部分。
编辑
我正在寻找预测之外的东西。
我的代码目前看起来像这样:
var personsCursor= personsCollection.Find(_ => true);
var personsProjection = personsCursor.Project<Person>(Builders<Person>.Projection.Include(p => p._id));
var personsIds = await personsProjection.ToListAsync();
return personsIds .Select(p => p._id.ToString());
为此,您可以使用 Projection;
来自文档:
Projecting Fields
Many times we don’t need all the data contained in a document. The Projection builder will help build the projection parameter for the find operation. Below we’ll exclude the “_id” field and output the first matching document:
var projection = Builders<BsonDocument>.Projection.Exclude("_id"); var document = await collection.Find(new BsonDocument()).Project(projection).FirstAsync(); Console.WriteLine(document.ToString());
然后,在您自己的投影中,您可以指定需要哪些字段 return。如果你去上面的 link,你可以找到一些关于投影和 mongo c# 驱动程序的文档。
编辑:
此外,您可以使用projection builder
来指定您需要的return:
var projection = Builders<BsonDocument>.Projection.Expression(d => d._id);
// and then put this projection to your query
var items = await collection.Find(new BsonDocument()).Project(projection).ToListAsync();
现在,每个项目只应表示为 _id
。
希望对您有所帮助。
在C#中映射属性,需要验证官方文档mongodb
https://mongodb.github.io/mongo-csharp-driver/2.7/reference/bson/mapping/