2016-03-21 17 views
0

こんにちは私はオブジェクトを取得するためにデータベースを照会しようとしています。私はガイドに従って、誰もが全体のコレクションのforeachを使用しているようだ、これはどのように行われるはずですか?mongodbからオブジェクトを取得するC#

public void asd() 
     { 
      MongoClient _client = new MongoClient(); 
      IMongoDatabase _database = _client.GetDatabase("BlogDB"); 

      IMongoCollection<Blog> collection = _database.GetCollection<Blog>("Blog"); 

      var filter = new BsonDocument(); 
      var result = collection.Find(filter) 
       .Project(Blog => Blog.Posts) 
       .ToList(); 
      foreach (Posts post in result.FirstOrDefault()) 
      { 
       if (post.postid == postid) 
       { 
        //Do something with post E.g post.myfunction(); 
       } 
      } 
     } 

特定の投稿のみをクエリから取得する方法はありませんか?

私はフィルターを使用しようとしましたが、コレクション.Find(フィルター)は私の全体のbsondocumentでコレクションを返します。

答えて

0

次のコードのコードを少し単純化について

public Posts Get(int id) 
    { 
     var builder = Builders<Posts>.Filter; 

     var query = builder.Eq(x => x.postid, id); 
     return collection.Find(query).SingleOrDefaultAsync().Result; 
    } 
+0

var result = collection.Find(filter) .Project(Blog => Blog.Posts) .ToList(); foreach (Posts post in result.FirstOrDefault()) { if (post.postid == postid) { //Do something with post E.g post.myfunction(); } } 

を置き換えますか? コレクションを に変更した場合IMongoCollection collection = _database.GetCollection ( "ブログ"); コンパイルされますが、参照としてnullが返されます。 – Jacob

0

方法を使用することができます。あなたは、単一のマッチング文書を必要とするので、

は私がコレクションブログから記事を返すことができますどのように

var post = collection.Find(filter) 
    .Project(Blog => Blog.Posts) 
    .Limit(1) 
    .FirstOrDefault(); 
関連する問題