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

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

Insert操作:

单条插入

var single={"name":"mei","age":22}
db.user.insert(single);

循环插入

var single={"name":"tinyphp","num":28,}
for(var i=0;i<5;i++){single.num=i;db.user.insert(single);}

Find查询操作:

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

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

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

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

例子:

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

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

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

例子:

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

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

例子:

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

表示跳过前20条文档

排序:-1降序,1升序

db.user.findOne()

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

比较查询操作符:

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

例子:

/*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数据类型编号的文档

正则匹配

/* find name 开头为j的*/
db.user.find({"name":/^j/})

$where查询

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

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

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

还可以存起来用:

var list=db.user.find();
 list.forEach(function(x){
print(x.name);
})

Update操作:

整体更新

var model=db.user.findOne({"name":"jack"})
model.age=44
db.user.update({"name":"jack"},model)

局部更新

$inc修改器

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

$set修改器

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

update的true参数

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

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

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

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

Remove操作:

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

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

标签:
MongoDB,增删查改,JavaScript,Shell

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?