MongoDB 检索语句

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

        }
View Code

其中BsonIgnoreExtraElements 在对象上最好加上,因为Mongodb的一些序列化方法和c#的不一样,比如日期格式,保存在Mongodb中的时间会自动扣减8个小时(本地时间)。使用BsonIgnoreExtraElements标示对象后,检索出来的时间属性不需要再次处理。

MongoClient的初始化有四种:

MongoClient();
MongoClient(connectionString);
MongoClient(MongoClientSettings);
MongoClient(MongoUrl);
View Code

我这边使用了connectionString和MongoUrl这两种方法。其中connectionString链接字符串的值:mongodb://uname:pwd@hostip:port/database  。其中uname是用户名,pwd是密码。hostip是服务器ip地址,port是端口号,database是数据库名称。

所以有var client=new MongoClient(mongodb://uname:pwd@hostip:port)  或者

MongoUrl url = new MongoUrl(mongodb://uname:pwd@hostip: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();

posted @ 2017-11-06 13:53  Chasel张  阅读(466)  评论(0编辑  收藏  举报