在C#中使用MongoDb检索数据的几种方法
检索对象:
[BsonIgnoreExtraElements] public class UserMongoModel { /// <summary> /// /// </summary> public long UserID { set; get; } public string UserName { get; set; } /// <summary> /// /// </summary> public int UserType { set; get; } /// <summary> /// 0-删除 1-未删除 /// </summary> public int IsValid { set; get; } /// <summary> /// /// </summary> public DateTime CreateTime { set; get; } }
其中BsonIgnoreExtraElements 在对象上最好加上,因为Mongodb的一些序列化方法和c#的不一样,比如日期格式,保存在Mongodb中的时间会自动扣减8个小时(本地时间)。使用BsonIgnoreExtraElements标示对象后,检索出来的时间属性不需要再次处理。
MongoClient的初始化有四种:
MongoClient(); MongoClient(connectionString); MongoClient(MongoClientSettings); MongoClient(MongoUrl);
我这边使用了connectionString和MongoUrl这两种方法。其中connectionString链接字符串的值:mongodb://uname:[email protected]:port/database 。其中uname是用户名,pwd是密码。hostip是服务器ip地址,port是端口号,database是数据库名称。
所以有var client=new MongoClient(mongodb://uname:[email protected]:port) 或者
MongoUrl url = new MongoUrl(mongodb://uname:[email protected]:port/database );
var client = new MongoClient(url);
获取数据库名称的方法 string databaseName = url.DatabaseName;
获取数据库对象:
var db=client.GetDatabase(databaseName);
获取对应的表数据:
var collection=db.GetCollection<TDocument>(tablename)
其中TDocument可以是对应的UserMongoModel也可以是BsonDocument等。tablename是对应的表名称。
后面我们之间使用db和collection代表对应的库和表
1 最简单的检索,没有检索条件
var filter = Builders<UserMongoModel>.Filter.Empty;
var result = collection.Find<UserMongoModel>(filter);
2 如果是检索数据的总数
var filter = Builders<UserMongoModel>.Filter.Empty;
var sum= collection.Find<UserMongoModel>(filter).Count();