0

特定の句に一致する特定のドキュメントを取得したいのですが、リレーショナルデータベースでそのWHERE効果を実現する方法がわかりません。単語とその翻訳(2つのフィールドを持つオブジェクト)を含む単純なデータベースがあり、このコードを使用します

var words = database.GetCollection<Word>("Dictionary")

それらを取得します。しかし、これはコレクション全体を取得します。コレクションに何千ものレコードがあった場合はどうなりますか?必要なレコードだけを取得するにはどうすればよいですか?

4

2 に答える 2

1

これは、コレクションのように変更されたWordというクラスがあることを前提としています。

MongoServer _server = new MongoClient(connectionString).GetServer();
MongoDatabase _database = _server.GetDatabase(database);
MongoCollection _collection = _database.GetCollection(collection);

var results = _collection.FindAs<Word>(Query.EQ("MyField","WordToFind"));
于 2014-06-06T21:21:33.223 に答える
1

以下のように一致する正規表現を使用します。「i」は大文字と小文字を区別しないことを示します。

var collections = mongoDatabase.GetCollection("Abcd");

var queryA = Query.And(
         Query.Matches("strName", new BsonRegularExpression("ABCD", "i")), 
         Query.Matches("strVal", new BsonRegularExpression("4121", "i")));

var queryB = Query.Or(
       Query.Matches("strName", new BsonRegularExpression("ABCD","i")),
       Query.Matches("strVal", new BsonRegularExpression("33156", "i")));

var getA = collections.Find(queryA);
var getB = collections.Find(queryB);

複数のフィールドを検索する場合は、クエリで「And」または「Or」を使用します。

于 2015-12-11T07:34:12.837 に答える