java调用js查询mongo_MongoDB增删查改操作示例【基于JavaScript Shell】

本文实例讲述了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数据库程序设计有所帮助。

Mingo 是 MongoDB 查询语言的 JavaScript 实现。Mingo 利用 MongoDB 风格查询,在客户端或者服务器端环境下,允许直接查询内存的 JavaScript 对象。特性:Comparisons Operators ($gt, $gte, $lt, $lte, $ne, $nin, $in)Logical Operators ($and, $or, $nor, $not)Evaluation Operators ($regex, $mod, $where)Array Operators ($all, $elemMatch, $size)Element Operators ($exists, $type)Aggregation Pipeline Operators ($group, $match, $project, $sort, $limit, $unwind, $skip)Conditional Operators ($cond, $ifNull)Group Operators ($addToSet, $sum, $max, $min, $avg, $push, $first, $last)Arithmetic Operators ($add, $divide, $mod, $multiply, $subtract)String Operators ($cmp, $strcasecmp, $concat, $substr, $toLower, $toUpper)Set Operators ($setEquals, $setIntersection, $setDifference, $setUnion, $setIsSubset, $anyElementTrue, $allElementsTrue)Projection Operators ($elemMatch, $slice)JSON stream filtering and projection. NodeJS only使用var Mingo = require('mingo'); // or just access *Mingo* global in browser // setup the key field for your collection Mingo.setup({     key: '_id' // default }); // create a query with criteria // find all grades for homework with score >= 50 var query = new Mingo.Query({     type: "homework",     score: { $gte: 50 } });搜索和过滤// filter collection with find() var cursor = query.find(collection); // shorthand with query criteria // cursor = Mingo.find(collection, criteria); // sort, skip and limit by chaining cursor.sort({student_id: 1, score: -1})     .skip(100)     .limit(100); // count matches cursor.count(); // iterate cursor // iteration is forward only while (cursor.hasNext()) {     console.log(cursor.next()); } // use first(), last() and all() to retrieve matched objects cursor.first(); cursor.last(); cursor.all(); // Filter non-matched objects ( var result = query.remove(collection); 标签:Mingo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值