2017-04-17 120 views
1

在我的C#控制檯應用程序項目中,我使用MongoDB.Driver.2.4.3連接到MongoDB 3.2.10。使用c#查詢mongodb文檔字段值

我在收集的文件,我的輸出與下面的代碼來安慰:

{ 「_id」:物件( 「58f034bf5c57ef10bc4f8d3d」), 「名字」: 「Christano」, 「出生日期」:ISODate(」國家「:」巴西「} {」_id「:ObjectId(」58f0c7bb5c57ef10bc506216「),」firstname「:」Pele「,」birthdate「:ISODate(」2007- 05-14T02:32:31Z「),」country「:」Brazil「} {」_id「:ObjectId(」58f0ca995c57ef10bc506763「),」firstname「:」Anthony「,」birthdate「:ISODate(」 「國家」:「意大利」}

如何將各個字段的值寫入控制檯,以便我c一個商店和個人操縱這些價值?

using MongoDB.Bson; 
using MongoDB.Driver; 

var playerfirstname; 
var playerbirthdate; 
var playercountry; 

var client = new MongoClient("mongodb://localhost:27017"); 
var DB = client.GetDatabase("football"); 
var collection = DB.GetCollection<BsonDocument>("players"); 

var filter = Builders<BsonDocument>.Filter.Eq("country", "Brazil"); 
var cursor = collection.Find(filter).ToCursor(); 
foreach (var document in cursor.ToEnumerable()) 
{ 
    Console.WriteLine(document); 
} 

回答

1

您應該定義一個類像下面的

internal class Player 
{ 
    public ObjectId Id { get; set; } 
    public string firstname { get; set; } 
    public DateTime birthdate { get; set; } 
    public string country { get; set; } 
} 

,然後改變集合鍵入如下:

var players = DB.GetCollection<Player>("players"); 

然後,只需將LINQ可以過濾掉所有那些球員國家不是巴西,並訪問每個球員的屬性如下:

var playersInBrazil = players.AsQueryable() 
          .Where(player => player.country == "Brazil"); 
foreach(var playerInBrazil in playersInBrazil) 
{ 
    Console.WriteLine(playerInBrazil.firstname); 
} 
+0

我收到錯誤\t CS1061 \t'IMongoCollection '未包含'Where'的定義,也沒有擴展方法'Where'接受類型爲'IMongoCollection '的第一個參數找到(是否缺少using指令或程序集引用?) – ikask

+0

嚴重\t代碼\t說明\t項目\t文件\t線\t抑制狀態 錯誤\t CS1579 \t foreach語句不能對類型的變量操作「?」因爲'?'不包含'GetEnumerator'的公開定義\t ConsoleApp1 – ikask

+0

@ikask請檢查我的更新並讓我知道。謝謝 – Christos