2012-09-23 12 views
10

MongoDBのC#ドライバ複数のフィールドクエリ

私は(name1=value1のために)行う方法を知って

Dim qry = Query.EQ("name1","value1") 

name1=value1name2=value2のすべてのドキュメントを検索できるように、このクエリを変更するにはどうすればよいですか?

(同様に)

db.collection.find({"name1":"value1","name2":"value2"}) 

答えて

18

使用And方法 - tutorialからC#​​の例:

MongoCollection<BsonDocument> books; 
var query = Query.And(
    Query.EQ("author", "Kurt Vonnegut"), 
    Query.EQ("title", "Cats Craddle") 
); 
2

そしていつもやったときに私がいた場合に見られるように、あなたが(やりたいことはありませんandの上には操作しないでください)。以下に示すように、新しいQueryDocumentを作成することもできます。これはまさにあなたが探していたものと同等です。

Query.Not(new QueryDocument { 
    { "Results.Instance", instance }, 
    { "Results.User", user.Email } })) 
0

私は、異なるフィールド内のテキストを検索したいと全文検索は、そうであっても多くの時間を無駄にした後、私のために動作しません。だから私はこれを試した。

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(); 
関連する問題