Подтвердить что ты не робот

Получить только указанное поле

Я прочитал этот пример:

SELECT a, b FROM пользователей WHERE age = 33 db.users.find({age: 33}, {a: 1, b: 1})

Но я не могу перевести его на С#. Кто-нибудь может мне помочь?

4b9b3361

Ответ 1

Вы можете сделать это, используя метод SetFields класса MongoCursor, ниже полного примера:

var server = MongoServer.Create(connectionString);
var db = _server.GetDatabase("dbName");
db.GetCollection("users");

var cursor = Photos.FindAs<DocType>(Query.EQ("age", 33));
cursor.SetFields(Fields.Include("a", "b"));
var items = cursor.ToList();

Ответ 2

Я перевел ваш запрос ниже, используя новый драйвер С# (2.2)

var mongoClient = new MongoClient(""mongodb://127.0.0.1:27017"");
var database = mongoClient.GetDatabase("databaseName");
IMongoCollection<Users> _collection = database.GetCollection<Users>("Users");
var condition = Builders<Users>.Filter.Eq(p => p.age, 33);
var fields = Builders<Users>.Projection.Include(p => p.a).Include(p => p.b);
var results= _collection.Find(condition).Project<Users>(fields).ToList().AsQueryable();

Ответ 3

//create user class
//(not sure how your class looks like)

public class User
{
[DataMember(Name = "age")]
public int age;
[DataMember(Name = "a")]
public string int a;
[DataMember(Name = "b")]
public string int b;
}

//then you can use LINQ easily

var server = MongoServer.Create(connectionString);
var db = _server.GetDatabase("dbName");
var usersCollection = server.GetCollection<User>("users");

var filteredCollection = usersCollection.AsQueryable().Where(x=> x.age < 33).Where(x=> x.a != null).Contains(x=> x.b != null);