2012-12-30 6 views
0

J'aimerais obtenir certains documents correspondant à une clause spécifique, mais je ne sais pas comment obtenir cet effet WHERE dans les bases de données relationnelles. J'ai une base de données simple avec des mots et leurs traductions (objets avec 2 champs) et utilise ce codeRequête MongoDB en C#

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

pour les obtenir. Mais cela obtient toute la collection. Et s'il y avait des milliers d'enregistrements dans la collection? Comment obtenir seulement les disques que je veux?

+1

Selon ce guide de démarrage rapide, vous devriez appeler des méthodes sur la collection pour affiner votre recherche. http://www.mongodb.org/display/DOCS/CSharp+Driver+Quickstart#CSharpDriverQuickstart-Getareferencetoacollectionobject Disclaimer: Je n'ai jamais utilisé MongoDB avant :-) –

+0

Je pensais si je pouvais seulement récupérer les disques dont j'avais besoin parce que de cette façon Je pense que je reçois toute la collection. Ou peut-être c'est le seul moyen (d'abord d'obtenir toute la collection) pour obtenir ces documents? –

+0

bien après avoir lu ce genre de choses, je suppose que d'obtenir une "référence" à la collection ne signifie pas obtenir toutes les données stockées dans la collection. –

Répondre

0

Cela suppose que vous avez une classe appelée Word qui est modélisée comme votre collection.

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")); 
0

Utilisez les expressions régulières correspondantes comme ci-dessous. Le 'i' montre une insensibilité à la casse.

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); 

Pour utiliser 'And' ou 'Or' dans votre requête, si vous souhaitez effectuer une recherche sur plusieurs champs.