2017-08-23 98 views
0

我嘗試從數據庫集合中檢索特定元素。Mongodb c#檢索元素

collection.Find(new BsonDocument()).ForEachAsync(X => Console.WriteLine(X)); 

此代碼給這樣的事情:

{ 「_id」:物件( 「599d420bf2e1abfed53fe3c6」), 「無」:9, 「字」: 「寫」}

{「 _id」:的ObjectId( 「599d420bf2e1abfed53fe3c8」), 「無」:10, 「字」: 「第一」}

{ 「_id」:的ObjectId( 「599d420bf2e1abfed53fe3ca」), 「無」:11, 「字」: 「水」}

但我只想看到:

write 
first 
water 

我該怎麼做?謝謝

回答

0

因爲我不知道你的數據是什麼樣子,所以我創建了自己的測試樣本,以便你能看到我如何使用投影來解決問題。正如你所看到的,我已經創建了一個簡單的測試集合通訊簿,其中包含一個帶有屬性Word的文檔。它也有隱含的「_id」屬性 View from Studio 3T 我在LINQPad中創建了一個小樣本應用程序來演示。

// Define other methods and classes here 
class Book 
{ 
    public ObjectId _id { get; set; } 
    public string Word { get; set; } 
} 

void Main() 
{ 
    var mongoConnectionString = @"mongodb://Topaz:p%[email protected]"; 
    var client = new MongoDB.Driver.MongoClient(mongoConnectionString); 
    var db = client.GetDatabase("Test"); 
    var col = db.GetCollection<Book>("Books"); 

    var filter = Builders<Book>.Filter.Empty; 
    var projection = Builders<Book>.Projection.Expression(m => m.Word); 
    var options = new FindOptions<Book, String> { BatchSize = 256, Projection = projection }; 

    var results = new List<string>(); 
    using (var cursor = col.FindAsync(filter, options).Result) 
    { 
     while (cursor.MoveNextAsync().Result) 
     { 
      var batch = cursor.Current as IList<String>; 
      results.AddRange(batch); 
     } 
    } 

    results.ForEach(a => Console.WriteLine(a)); 
} 

這裏是我得到的輸出。

 
Foo 
Bar 

我希望這可以幫助你。如果是這樣,請標記我的回答,並在評論中告訴我。謝謝。