mongodb 查询的用法
时间:2021-07-01 10:21:17
帮助过:3人阅读
- using MongoDB.Bson;
- using MongoDB.Driver;
[csharp] view plain
copy
- const string strconn = "mongodb://127.0.0.1:27017";
- const string dbName = "test";
- MongoServer server;
- MongoDatabase db;
- void Init()
- {
-
- server = MongoDB.Driver.MongoServer.Create(strconn);
-
- db = server.GetDatabase(dbName);
- }
3、查询数据
1)查询规则集合
[csharp] view plain
copy
- class Users
- {
- public ObjectId _id;
- public string Name { get; set; }
- public string Sex { set; get; }
- }
- const string ENTER = "\r\n";
- private void btnQuery_Click(object sender, EventArgs e)
- {
-
- MongoCollection col = db.GetCollection("Users");
-
- var result1 = col.FindAllAs<Users>().ToList();
- StringBuilder sb = new StringBuilder("");
- foreach (Users user in (List<Users>)result1)
- {
- sb.Append(user.Name + ENTER);
- }
- MessageBox.Show(sb.ToString());
- }
这种方式只适合每个文档(document)结构都一样的集合:
但是NoSql诟病关系型数据库的论点之一,就是这种所谓每条记录的结构都要保持一致的情况,因为有些字段不是所有记录的必须。那么,在mongoDB这里,对于集合中文档结构不一致的情况下,上述代码获取不到数据,似乎应该采用如下方式:
2)查询不规则集合
集合情况:
在集合thins里,基本上每个文档结构都不一样。
查找代码如下:
[csharp] view plain
copy
- private void btnQuery2_Click(object sender, EventArgs e)
- {
-
- MongoCollection col = db.GetCollection("thins");
-
- var result1 = col.FindAllAs<BsonDocument>().ToList();
- StringBuilder sb = new StringBuilder("");
- foreach (BsonDocument bd in (List<BsonDocument>)result1)
- {
- string name = bd.Contains("name") ? bd.GetValue("name").ToString() : "不存在";
- sb.Append(name + ENTER);
- }
- MessageBox.Show(sb.ToString());
- }
mongodb 查询的用法
标签: