设为首页 加入收藏

TOP

MongoDB基本操作详解(二)
2015-11-21 01:31:55 来源: 作者: 【 】 浏览:2
Tags:MongoDB 基本操作 详解
"4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 } { "_id" : ObjectId("4fb4af89afa87dc1bed94331"), "age" : 8, "length_1" : 30 } { "_id" : ObjectId("4fb4af8cafa87dc1bed94332"), "age" : 6, "length_1" : 30 }

查询 age 的值在 7,8 范围内的数据

> db.c1.find({age:{$in: [7,8]}}); { "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }
{ "_id" : ObjectId("4fb4af89afa87dc1bed94331"), "age" : 8, "length_1" : 30 }

可以看出只显示出了 age 等于 7 或 8 的数据,其它不符合规则的数据并没有显示出来

8、$nin 不包含

与 sql 标准语法的用途是一样的,即要查询的数据在一系列枚举值的范围外查询 x 的值在 2,4,6 范围外的数据

db.things.find({x:{$nin: [2,4,6]}});

举例如下:

C1 表的数据如下:

> db.c1.find()
{ "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }
{ "_id" : ObjectId("4fb4af89afa87dc1bed94331"), "age" : 8, "length_1" : 30 }
{ "_id" : ObjectId("4fb4af8cafa87dc1bed94332"), "age" : 6, "length_1" : 30 }

查询 age 的值在 7,8 范围外的数据

> db.c1.find({age:{$nin: [7,8]}});
{ "_id" : ObjectId("4fb4af8cafa87dc1bed94332"), "age" : 6, "length_1" : 30 }

可以看出只显示出了 age 不等于 7 或 8 的数据,其它不符合规则的数据并没有显示出来

9、$size 数组元素个数

对于{name: ‘David’, age: 26, favorite_number: [ 6, 7, 9 ] }记录匹配 db.users.find({favorite_number: {$size: 3}});不匹配 db.users.find({favorite_number: {$size: 2}});

举例如下:

C1 表的数据如下:

> db.c1.find()
{ "_id" : ObjectId("4fb4af85afa87dc1bed94330"), "age" : 7, "length_1" : 30 }
{ "_id" : ObjectId("4fb4af89afa87dc1bed94331"), "age" : 8, "length_1" : 30 }
{ "_id" : ObjectId("4fb4af8cafa87dc1bed94332"), "age" : 6, "length_1" : 30 }

查询 age 的值在 7,8 范围外的数据

> db.c1.find({age:{$nin: [7,8]}});
{ "_id" : ObjectId("4fb4af8cafa87dc1bed94332"), "age" : 6, "length_1" : 30 }

可以看出只显示出了 age 不等于 7 或 8 的数据,其它不符合规则的数据并没有显示出来

10、正则表达式匹配

查询不匹配 name=B*带头的记录db.users.find({name: {$not: /^B.*/}});

举例如下:

C1 表的数据如下:

> db.c1.find();
{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }
{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

查询 name 不以 T 开头的数据

> db.c1.find({name: {$not: /^T.*/}});
{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

可以看出只显示出了 name=Tony 的数据,其它不符合规则的数据并没有显示出来

11、Javascript 查询和$where 查询

查询 a 大于 3 的数据,下面的查询方法殊途同归

 db.c1.find( { a : { $gt: 3 } } );
 db.c1.find( { $where: "this.a > 3" } );
 db.c1.find("this.a > 3");
 f = function() { return this.a > 3; } db.c1.find(f);

12、count 查询记录条数

count 查询记录条数db.users.find().count();

以下返回的不是 5,而是 user 表中所有的记录数量

db.users.find().skip(10).limit(5).count();

如果要返回限制之后的记录数量,要使用 count(true)或者 count(非 0)

db.users.find().skip(10).limit(5).count(true);

举例如下:

C1 表的数据如下:

> db.c1.find()
{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }
{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

查询 c1 表的数据量

> db.c1.count()
2

可以看出表中共有 2 条数据

13、skip 限制返回记录的起点

从第 3 条记录开始,返回 5 条记录(limit 3, 5)

db.users.find().skip(3).limit(5);

举例如下:

C1 表的数据如下:

> db.c1.find()
{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8"), "name" : "Tony", "age" : 20 }
{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

查询 c1 表的第 2 条数据

> db.c1.find().skip(1).limit(1)
{ "_id" : ObjectId("4fb5fab96d0f9d8ea3fc91a9"), "name" : "Joe", "age" : 10 }

可以看出表中第 2 条数据被显示了出来

14、sort 排序

以年龄升序 asc

db.users.find().sort({age: 1});

以年龄降序 desc

db.users.find().sort({age: -1});

C1 表的数据如下:

> db.c1.find()
{ "_id" : ObjectId("4fb5faaf6d0f9d8ea3fc91a8
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mongodb的基本操作 下一篇MongoDB的一些基本操作

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: