По умолчанию выборка содержит все поля документа, но мне не нужны все поля. Например, имеется коллекция users вида:
{
"_id": {
"$oid": "594706879b66306d4152039"
},
"userId": 123456,
"firstName": "Anatoly",
"lastName": "Mikhailyuk"
}
Нужно получить только имя пользователя с userId. Пытался получить его так:
var client = new MongoClient("mongodb://user:pass@server");
var db = client.GetDatabase("collection_name");
var collection = db.GetCollection<User>("users");
var filterBuilder = Builders<User>.Filter;
var filter = filterBuilder.Eq("userId", 123456);
var result = collection.Find(filter, {"_id": 0, "userId": 0, "firstName": 1, "lastName": 0})
Console.WriteLine(result);
Не сработало. Использовал VS2017 и MongoDB.driver версии 2.4.4. Есть ли способ сделать это?
Разобрался.
class User
{
[BsonId]
public ObjectId Id { get; set; }
[BsonElement("userId")]
[Required]
public long UserId { get; set; }
[BsonElement("firstName")]
public string FirstName { get; set; }
[BsonElement("lastName")]
public string LastName { get; set; }
}
class UserLastName
{
[BsonId]
public ObjectId Id { get; set; }
[BsonElement("lastName")]
public string LastName{ get; set; }
}
var client = new MongoClient("mongodb://user:pass@server");
var db = client.GetDatabase("collection");
var collection = db.GetCollection<User>("users");
var projection = Builders<User>.Projection.Include("lastName");
var result = collection.Find(o => o.UserId == userId).Project<UserLastName>(projection).ToList();
Console.WriteLine(result[0].LastName);
Использовал VS2017 и MongoDB.driver версии 2.4.4.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости