Ответ 1
Использовать метод And
- пример С# из tutorial:
MongoCollection<BsonDocument> books;
var query = Query.And(
Query.EQ("author", "Kurt Vonnegut"),
Query.EQ("title", "Cats Craddle")
);
Использование драйвера MongoDB С# Как включить в запрос несколько полей (Im using vb.net)
Я знаю, как это сделать (для name1=value1
)
Dim qry = Query.EQ("name1","value1")
Как я могу изменить этот запрос, чтобы я мог найти все документы, где name1=value1
и name2=value2
?
(аналогично)
db.collection.find({"name1":"value1","name2":"value2"})
Использовать метод And
- пример С# из tutorial:
MongoCollection<BsonDocument> books;
var query = Query.And(
Query.EQ("author", "Kurt Vonnegut"),
Query.EQ("title", "Cats Craddle")
);
И не всегда делает то, что вы хотите (как я выяснил, это был случай, когда вы делаете операцию не поверх a и). Вы также можете создать новый QueryDocument, как показано ниже. Это точно соответствует тому, что вы искали.
Query.Not(new QueryDocument {
{ "Results.Instance", instance },
{ "Results.User", user.Email } }))
Я хотел искать текст в разных полях, и полнотекстовый поиск не работает для меня даже после траты времени. поэтому я попробовал это.
var filter = Builders<Book>.Filter.Or(
Builders<Book>.Filter.Where(p=>p.Title.ToLower().Contains(queryText.ToLower())),
Builders<Book>.Filter.Where(p => p.Publisher.ToLower().Contains(queryText.ToLower())),
Builders<Book>.Filter.Where(p => p.Description.ToLower().Contains(queryText.ToLower()))
);
List<Book> books = Collection.Find(filter).ToList();