30、对于字符字段,可以使用正则表达式
查询以字母b或者B带头的所有记录
db.users.find({name: /^b.*/i});
{"Name":/中铁/}
31、$elemMatch(1.3.1及以上版本)
为数组的字段中匹配其中某个元素
32、Javascript查询和$where查询
查询 age > 18 的记录,以下查询都一样
db.users.find({age: {$gt: 18}});
db.users.find({$where: "this.age > 18"});
db.users.find("this.age > 18");
f = function() {return this.age > 18} db.users.find(f);
33、限制返回记录的开始点skip()
从第3条记录开始,返回5条记录(limit 3, 5)
db.users.find().skip(3).limit(5);
34、查询记录条数count()
db.users.find().count();
db.users.find({age:18}).count();
以下返回的不是5,而是user表中所有的记录数量
db.users.find().skip(10).limit(5).count();
如果要返回限制之后的记录数量,要使用count(true)或者count(非0)
db.users.find().skip(10).limit(5).count(true);
集合中的List列表元素and查询
如图 如果是集合中的 一个列表 我们需要多个条件查询时 发现使用and 是不起作用的。
查询validStartTime大于当前时间,并且versionLimitList字段中的clientId属性值为109和platFormCode属性值为2
这个时候其实应该使用elementmach
java 中的 用法:
Criteria criteria1 = Criteria.where("validStartTime").gt(new Date()).
and("versionLimitList").elemMatch
(Criteria.where("clientId").is(109).
and("platFormCode").is(2); |