好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MongoDB增删查改操作示例【基于JavaScript Shell】

本文实例讲述了MongoDB增删查改操作。分享给大家供大家参考,具体如下:

MongoDB自带了一个JavaScript Shell,所以在其中使用js语法是可以的。

Insert操作:

单条插入

?

1

2

var single={ "name" : "mei" , "age" :22}

db. user . insert (single);

循环插入

?

1

2

var single={ "name" : "tinyphp" , "num" :28,}

for (var i=0;i<5;i++){single.num=i;db. user . insert (single);}

Find查询操作:

?

1

db.集合名.find(query,fields,limit,skip)

query,指明查询条件,相当于SQL中的where语句
例子:

?

1

db.student.find({ "name" : "joe" , "age" :{$lt:22}})

fields用于字段映射,语法格式:{field:0}或{field:1}

例子:

?

1

db.student.find({ "age" :{$lt:22},{ "_id" :0, "name" :1}})

表示查询结果包含name字段,不包含_id字段

limit限制查询结果集的文档数量,指定查询返回结果数量的上限

例子:

?

1

db.student.find({ "name" : "joe" },{ "name" :1, "age" :1},5)

skip跳过一定数量的结果,设置第一条返回文档的偏移量

例子:

?

1

db.student.find({ "name" : "joe" },{ "name" :1, "age" :1},5,20)

表示跳过前20条文档

排序:-1降序,1升序

?

1

db. user .findOne()

注意事项:MongoDB不支持多集合间的连接查询,find函数一次查询只针对一个集合

比较查询操作符:

 

比较操作符 对应 参数
$eq和$ne =和!= { :{$eq: }}
$gt和$gte >和>= { :{$gt: }}
$lt和$lte <和<= { :{$lt: }}
$in和$nin 包含 和 不包含 { :{$in:[ , ]}}

 

例子:

?

1

2

/*find age >22*/

db. user .find({ "age" :{$gt:22}})

逻辑查询操作符:

 

逻辑操作符 对应 参数  
$and {$and:[{条件1},..,{条件N}]} db.user.find({$and:[{"name":"tinyphp","num":3}]}) 等同 db.user.find({"name":"tinyphp","num":3})
$or {$or:[{条件1},..,{条件N}]}  
$nor {$nor:[{条件1},..,{条件N}]}  
$not 取反 {field:{$not:{条件}}}  

 

元素操作符:

 

元素操作符 作用  
$exists 按照字段是否存在来查询文档 {field:{$exists:布尔值}} db.user.find({"age":{$exists:true}}) 查询存在age字段的文档
$type 选择字段值为指定BSON数据类型编号的文档    

 

正则匹配

?

1

2

/* find name 开头为j的*/

db. user .find({ "name" :/^j/})

$where查询

可以结合javascript进行查询,当javascript返回true时,才返回当前文档

?

1

db. user .find({$ where : function (){ return this. name == 'jack' }})

查询时,$where操作符不能使用索引,每个文档需要从BSON对象转换成javascript对象后,才可以通过$where表达式运行,因此比常规查询要慢,一般要避免使用$where查询。

还可以存起来用:

?

1

2

3

4

var list=db. user .find();

  list.forEach( function (x){

print(x. name );

})

Update操作:

整体更新

?

1

2

3

var model=db. user .findOne({ "name" : "jack" })

model.age=44

db. user . update ({ "name" : "jack" },model)

局部更新

$inc修改器

?

1

2

/* update bing age+30 */

db. user . update ({ "name" : "bing" },{$inc:{ "age" :30}})

$set修改器

?

1

2

/* update bing age=10 */

db. user . update ({ "name" : "bing" },{$ set :{ "age" :10}})

update的true参数

若update最后参数加true则修改条件不存在时,自动增加一条如:

?

1

db. user . update ({ "name" : "Mark" },{$ set :{ "age" :10}}, true )

会自动增加一条记录:name为mark,age为10

如果加了true,而且条件又满足则会批量修改,不然就默认只更新第一条

Remove操作:

?

1

db.person.remove({ "name" : "jack" })

希望本文所述对大家MongoDB数据库程序设计有所帮助。

原文链接:https://www.cnblogs.com/tinyphp/p/5654621.html

查看更多关于MongoDB增删查改操作示例【基于JavaScript Shell】的详细内容...

  阅读:23次