CFXIXI工作室首页
CF西西的博客 | MongoDB

MongoDB如何查询时间

31. 三月 2015
{"BeginTime":{"$gte":new Date("2015-03-30 14:30:00"),"$lte":new Date("2015-03-30 15:00:00")}}

MongoDB

mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)

17. 一月 2015
  1 ) . 大于,小于,大于或等于,小于或等于$gt:大于$lt:小于$gte:大于或等于$lte:小于或等于例子:db.collection.find({ "field" : { $gt: value } } ); // greater than : field > valuedb.collection.find({ "field" : { $lt: value } } ); // less than : field < valuedb.collection.find({ "field" : { $gte: value } } ); // greater than or equal to : field >= valuedb.collection.find({ "field" : { $lte: value } } ); // less than or equal to : field <= value 如查询j大于3,小于4: db.things.find({j : {$lt: 3}});db.things.find({j : {$gte: 4}}); 也可以合并在一条语句内: db.collection.find({ "field" : { $gt: value1, $lt: value2 } } ); // value1 < field < value     2) 不等于 $ne 例子: db.things.find( { x : { $ne : 3 } } );     3) in 和 not in ($in $nin)语法:db.collection.find( { "field" : { $in : array } } ); 例子: db.things.find({j:{$in: [2,4,6]}});db.things.find({j:{$nin: [2,4,6]}});4) 取模运算$mod如下面的运算:db.things.find( "this.a % 10 == 1") 可用$mod代替: db.things.find( { a : { $mod : [ 10 , 1 ] } } )5)  $all$all和$in类似,但是他需要匹配条件内所有的值:如有一个对象:{ a: [ 1, 2, 3 ] } 下面这个条件是可以匹配的: db.things.find( { a: { $all: [ 2, 3 ] } } ); 但是下面这个条件就不行了: db.things.find( { a: { $all: [ 2, 3, 4 ] } } );6)  $size$size是匹配数组内的元素数量的,如有一个对象:{a:["foo"]},他只有一个元素:下面的语句就可以匹配:db.things.find( { a : { $size: 1 } } ); 官网上说不能用来匹配一个范围内的元素,如果想找$size<5之类的,他们建议创建一个字段来保存元素的数量。 You cannot use $size to find a range of sizes (for example: arrays with more than 1 element). If you need to query for a range, create an extra size field that you increment when you add elements.   7)$exists $exists用来判断一个元素是否存在: 如: db.things.find( { a : { $exists : true } } ); // 如果存在元素a,就返回db.things.find( { a : { $exists : false } } ); // 如果不存在元素a,就返回8)  $type $type 基于 bson type来匹配一个元素的类型,像是按照类型ID来匹配,不过我没找到bson类型和id对照表。 db.things.find( { a : { $type : 2 } } ); // matches if a is a stringdb.things.find( { a : { $type : 16 } } ); // matches if a is an int9)正则表达式mongo支持正则表达式,如:db.customers.find( { name : /acme.*corp/i } ); // 后面的i的意思是区分大小写10)  查询数据内的值下面的查询是查询colors内red的记录,如果colors元素是一个数据,数据库将遍历这个数组的元素来查询。db.things.find( { colors : "red" } );11) $elemMatch如果对象有一个元素是数组,那么$elemMatch可以匹配内数组内的元素:> t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } ) { "_id" : ObjectId("4b5783300334000000000aa9"), "x" : [ { "a" : 1, "b" : 3 }, 7, { "b" : 99 }, { "a" : 11 } ]}$elemMatch : { a : 1, b : { $gt : 1 } } 所有的条件都要匹配上才行。 注意,上面的语句和下面是不一样的。 > t.find( { "x.a" : 1, "x.b" : { $gt : 1 } } )$elemMatch是匹配{ "a" : 1, "b" : 3 },而后面一句是匹配{ "b" : 99 }, { "a" : 11 } 12)  查询嵌入对象的值db.postings.find( { "author.name" : "joe" } ); 注意用法是author.name,用一个点就行了。更详细的可以看这个链接: dot notation 举个例子: > db.blog.save({ title : "My First Post", author: {name : "Jane", id : 1}}) 如果我们要查询 authors name 是Jane的, 我们可以这样: > db.blog.findOne({"author.name" : "Jane"}) 如果不用点,那就需要用下面这句才能匹配: db.blog.findOne({"author" : {"name" : "Jane", "id" : 1}}) 下面这句: db.blog.findOne({"author" : {"name" : "Jane"}}) 是不能匹配的,因为mongodb对于子对象,他是精确匹配。   13) 元操作符 $not 取反 如: db.customers.find( { name : { $not : /acme.*corp/i } } );db.things.find( { a : { $not : { $mod : [ 10 , 1 ] } } } ); mongodb还有很多函数可以用,如排序,统计等,请参考原文。mongodb目前没有或(or)操作符,只能用变通的办法代替,可以参考下面的链接:

MongoDB

关于MongoDataHelper.cs从数据库中读取字段

25. 四月 2013
下载(需要和mongodb C# driver一起使用) MongoDBHelper.rar (1.64 kb) 如果需要从数据库中读取string字段的话可以调用方法 MongoDBHelper.GetString() 获取时间字段的话可以使用方法 MongoDBHelper.GetDateTime()

MongoDB

MongoDB C# Driver 对某条数据更新一个字段

18. 四月 2013
参考:http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/#find-and-findas-methods MongoCollection<BsonDocument> books; var query = new QueryDocument { { "author", "Kurt Vonnegut" }, { "title", "Cats Craddle" } }; var update = new UpdateDocument { { "$set", new BsonDocument("title", "Cat's Cradle") } }; BsonDocument updatedBook = books.Update(query, update);

MongoDB

MongoDB C# Driver 如何对一个数组使用in查询

17. 四月 2013
在mongoDB中的查询语句和一般cmd的写法有些不太一样 这里我们给出一段代码示例: 主要是将一个数组放到BsonArray当中,将其连同$in条件一起送到QueryDocument的对象当中 代码示例: QueryDocument query = new QueryDocument();                     string[] usergrade = userInfo.Grade.Split(',');                     var selector = new QueryDocument();                     selector.Add("$in", new BsonArray(usergrade));                     query.Add("CustomId", selector);                     var docs = mc.Collection.Find(query);                                         foreach (var doc in docs)                     {                         //......do your work                                             } 其它查询表达式参考: query = new QueryDocument();                 query.Add("bzdm", strBzdm);                 var selector = new QueryDocument();                 selector.Add("$nin", new BsonArray { "ZC", "ZZZ" });                 query.Add("hydm", selector);                 selector = new QueryDocument();                 selector.Add("$gte", startdate);                 selector.Add("$lte", enddate);

.NET, MongoDB

MongoDB C# Driver 官方文档地址

17. 四月 2013
github:https://github.com/mongodb/mongo-csharp-driver doc:http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/

.NET, MongoDB

mongoDB C# Driver查询大于表达式

17. 四月 2013
query["CustomId"] = new BsonDocument("$gt",10);

MongoDB

MongoDB查询表中的数据

7. 三月 2013
  MongoDB查询表中的所有数据 需要引入.net和mongoDB驱动cs以及MongoDBProvider.cs,以后贴出来 using (MongoDBProvider mc = new MongoDBProvider("aaa", "bbb"))                 {                     MongoCursor<BsonDocument> docs = mc.Collection.FindAll();                     foreach (BsonDocument val in docs)                     {                       }                 } 如果希望根据条件进行查询: 可以这样操作: QueryDocument query = new QueryDocument();                     query.Add("_id", code);                     var docs = mc.Collection.Find(query);                     foreach (var doc in docs) {                                                  ......do your work                         break;                     }  

.NET, MongoDB

.net mongodb 简单插入数据库Demo

4. 三月 2013
net mongodb 简单插入数据库DemoMongoDB居然不用建表结构太神奇了这是一个console程序 附件下载: MongoDBConsole.rar (466.37 kb)   代码示例: using (var mc = new MongoDBProvider("local", "UserInfo")) { try { DateTime RegTime = DateTime.Now; BsonDocument doc = new BsonDocument(); doc.Add("_id", "1"); doc.Add("UserId", "2"); doc.Add("UserName", "cf"); doc.Add("MobileTel", "123456"); doc.Add("IP", "127.0.0.1"); doc.Add("Step", 1); doc.Add("RegHour", RegTime.Hour); doc.Add("RegDate", RegTime.Date); doc.Add("RegTime", RegTime); doc.Add("update", RegTime); doc.Add("update1", Convert.ToInt64(DateTime.Now.ToString("yyyyMMddHHmmss"))); mc.Collection.Save<BsonDocument>(doc); } catch(Exception e) { throw e; //state = false; } }

MongoDB

MongoDB增加用户认证: 增加用户、删除用户、修改用户密码、读写权限、只读权限

28. 二月 2013
参考:http://hi.baidu.com/ixigua/item/69eabbcc5a078625a0b50a5e (非关系型数据库MongoDB)http://hi.baidu.com/ixigua开启客户端;> use admin> db.addUser("ixigua", "hi.baidu")> db.auth("ixigua", "hi.baidu") 查看已存在的用户的命令:> db.system.users.find() 现在,来给另一个数据库virusDB 配置一个读写权限的用户> use virusDB> db.addUser("virus", "passwordForVirus") 配置一个只读权限的用户. (only supported in 1.3.2+)> use db_ixigua> db.addUser("guest", "passwordForReadonly", true) 更改密码利用 addUser 命令来更改一个已存在用户的密码> use db_ixigua> db.addUser("guest", "change_passwordForReadonly", true)利用下面的命令可以看到刚才创建的两个用户> db.system.users.find() 删除用户的命令db.system.users.remove( { user: username } )> db.system.users.remove( {user:"guest"} );

MongoDB