Mongo 常用技术

来源:互联网 发布:淘宝卖家分享有礼设置 编辑:程序博客网 时间:2024/06/03 21:32

0. 建立collection

   db.createCollection("test")



1. find命令中使用通配符, 使用$regex正则:

$regex"

  操作符查询中可以对字符串的执行正则匹配。 MongoDB使用Perl兼容的正则表达式(PCRE)库来匹配正则表达式.

  我们可以使用正则表达式对象或者$regex操作符来执行正则匹配:

//查询name键值以“4”结尾的文档db.inventory.find( { name: /.4/i } );db.inventory.find( { name: { $regex: '.4', $options: 'i' } } );

 

options使options(使用regex )

  • i   如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。
  • m   默认情况下,PCRE 认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行).如果目标字符串 中没有 "\n"字符,或者模式中没有出现“行首”/“行末”字符,设置这个修饰符不产生任何影响。
  • s    如果设置了这个修饰符,模式中的点号元字符匹配所有字符,包含换行符。如果没有这个修饰符,点号不匹配换行符。
  • x    如果设置了这个修饰符,模式中的没有经过转义的或不在字符类中的空白数据字符总会被忽略,并且位于一个未转义的字符类外部的#字符和下一个换行符之间的字符也被忽略。 这个修饰符使被编译模式中可以包含注释。 注意:这仅用于数据字符。 空白字符 还是不能在模式的特殊字符序列中出现,比如序列 。

  注:JavaScript只提供了i和m选项,x和s选项必须使用$regex操作符。

options使options(使用regex )

  • i   如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。
  • m   默认情况下,PCRE 认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行).如果目标字符串 中没有 "\n"字符,或者模式中没有出现“行首”/“行末”字符,设置这个修饰符不产生任何影响。
  • s    如果设置了这个修饰符,模式中的点号元字符匹配所有字符,包含换行符。如果没有这个修饰符,点号不匹配换行符。
  • x    如果设置了这个修饰符,模式中的没有经过转义的或不在字符类中的空白数据字符总会被忽略,并且位于一个未转义的字符类外部的#字符和下一个换行符之间的字符也被忽略。 这个修饰符使被编译模式中可以包含注释。 注意:这仅用于数据字符。 空白字符 还是不能在模式的特殊字符序列中出现,比如序列 。

  注:JavaScript只提供了i和m选项,x和s选项必须使用$regex操作符。


2. pymongo之update()

如果设置multi=True,则对符合条件的多条记录修改,否则只修改第一条。

collection.update({'id':{'$gt':0}},{'$set':{'num':0}},multi=True)
                                也可以写成下面的样子,这条语句判断document中是否存在_id的字段,如果存在则更新全部document的num为0
collection.update({'_id':{'$exists':True}},{'$set':{'num':0}},multi=True)


3.  mongo 更改字段名

Shell代码 

  1. { "_id" : ObjectId("4e787a369748ed04b7c19b0f"), "abc" : "123" }

现,需要将字段"abc"改为"def",执行如下命令:

Shell代码 

  1. db.test.update({}, {$rename : {"abc" : "def"}}, false, true)

即可。


0 0
原创粉丝点击