2012-12-30 51 views
0

我想獲得某些與特定子句匹配的文檔,但不知道如何在關係數據庫中實現WHERE效果。我有一個簡單的數據庫,文字和他們的翻譯(具有2個字段的對象),並使用此代碼C#中的MongoDB查詢#

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

得到它們。但是,這得到了整個收藏。如果集合中有成千上萬的記錄怎麼辦?如何獲得我想要的記錄?

+1

根據此快速入門指南,您應該調用集合上的方法來縮小搜索範圍。 http://www.mongodb.org/display/DOCS/CSharp+Driver+Quickstart#CSharpDriverQuickstart-Getareferencetoacollectionobject聲明:我從來沒有使用MongoDB之前:-) –

+0

我在想如果我只能檢索我需要的記錄,因爲這種方式我想我正在收集整個系列。或者,也許這是獲得這些文檔的唯一方法(首先獲取整個集合)? –

+0

在讀完這些東西之後,我猜想獲得對該集合的「引用」並不意味着要獲取集合中存儲的所有數據。 –

回答

0

這裏假設你有一個叫做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")); 
0

使用正則表達式匹配如下。 '我'顯示不區分大小寫。

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',如果要搜索多個字段。