2016-10-20 5 views
2

私は以下のコードを持っています。私はmongodbを初めて使用しています。コレクションの特定の要素を見つけるのに助けが必要です。MongoDBとC#Find()

using MongoDB.Bson; 
using MongoDB.Driver; 
namespace mongo_console { 

public class User { 
    public ObjectId Id { get; set; } 
    public string name { get; set; } 
    public string pwd { get; set; } 
} 
class Program { 
    static void Main(string[] args) 
    { 
     MongoClient client = new MongoClient(); 
     MongoServer server = client.GetServer(); 
     MongoDatabase db = server.GetDatabase("Users"); 
     MongoCollection<User> collection = db.GetCollection<User>("users"); 

     User user = new User 
     { 
      Id = ObjectId.GenerateNewId(), 
      name = "admin", 
      pwd = "admin" 
     }; 
     User user2 = new User 
     { 
      Id = ObjectId.GenerateNewId(), 
      name = "system", 
      pwd = "system" 
     }; 
     collection.Save(user); 
     collection.Save(user2); 

     /* 
     * How do I collection.Find() for example using the name 
     */ 
    } 
} 
} 

ユーザーが見つかったら、印刷したいと思いますか、それともその位置を返すだけでしょうか?もしそうなら、どうすれば印刷できますか?

私はcollection.Find(X => x.something)いくつかの例を見てきましたが、私はそのxが何であるかを知っているか、例えば、検索にラムダを使用することができ、レコードを検索するに

答えて

9

を意味するものではありません。

var filter = Builders<User>.Filter.Eq(x => x.name, "system") 

それとも

var results = collection.Find(x => x.name == "system").ToList(); 

別の方法としては、強く型付けされたラムダやテキストで作業ビルダーを使用することができます

var filter = Builders<User>.Filter.Eq("name", "system") 

そしては

var results = collection.Find(filter).ToList(); 

上記のように見つけるそれからちょうどループと印刷結果

0

を使用することも、我々が使用している.NET Frameworkのバージョンによって異なります。

var list = await collection.Find(new BsonDocument()).ToListAsync(); 

方法2

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

Reference Example

0
using MongoDB.Bson; 
using MongoDB.Bson.Serialization.Attributes; 
using MongoDB.Driver; 
using MongoDB.Driver.Builders; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Mongo_console 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      MongoClient client = new MongoClient(); 
      MongoServer server = client.GetServer(); 
      MongoDatabase db = server.GetDatabase("admin"); 
      MongoCollection<Book> collection = db.GetCollection<Book>("Book"); 


      Book book1 = new Book 
      { 
       Id = ObjectId.GenerateNewId(), 
       name = "Reel To Real" 
      }; 
      Book book2 = new Book 
      { 
       Id = ObjectId.GenerateNewId(), 
       name = "Life" 
      }; 
      collection.Save(book1); 
      collection.Save(book2); 

      var query = Query<Book>.EQ(u => u.Id, new ObjectId("5a5ee6360222da8ad498f3ff")); 
      Book list = collection.FindOne(query); 
      Console.WriteLine("Book Name " + list.name); 


      Console.ReadLine(); 
     } 
    } 
    public class Book 
    { 
     [BsonId] 
     public ObjectId Id { get; set; } 
     public string name { get; set; } 

     public Book() 
     { 
     } 

     public Book(ObjectId id, string name) 
     { 
      this.Id = id; 
      this.name = name; 
     } 
    } 
} 
:我々は2倍のドライバを使用する場合、それは次のようになります。