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; } } }