MongoDB和C#Find()

我有以下代码,我是mongodb的新手,我需要帮助找到集合中的特定元素。

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 collection = db.GetCollection("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是什么或意思

要查找记录,您可以在find中使用Lambda,例如:

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

或者,您可以使用使用强类型Lambda或文本的构建器:

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

要么

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

然后使用如上所述的find

 // results will be a collection of your documents matching your filter criteria // Sync syntax var results = collection.Find(filter).ToList(); // Async syntax var results = await collection.Find(filter).ToListAsync(); 

它也根据我们使用的.Net框架版本而变化。 如果我们使用2x驱动程序,它应该看起来像:

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

方法2

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

参考例

 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 collection = db.GetCollection("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.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; } } }