您的位置:首页 > 数据库 > Mongodb

nosql mongodb 学习-----第二天 高级操作之查询命令

2013-10-12 00:03 288 查看
昨天学习了mongdb的安装、部署和简单的基本操作,今天继续学习复杂的查询。下面的内容都是经过操作能直接运行的,如果有什么问题请留言,大家一起学习。

1、创建数据库

MongoDB创建数据库完全可以使用use

如下:

use user;

这样就创建了一个数据库。

注:这一步很重要如果什么都不操作离开的话 这个库就会被系统删除。

2、新增记录

var single = {"name":"jack","password":"12345","age":"20",

"address":{"province":"anhui","city":"hefei"},

"favourite":["apple","banana"],

"birthday":new Date("2010-09-10"),

"pic":"D:\a.png"

}

db.user.insert(single)

var single = {"name":"very","password":"12345","age":"56",

"address":{"province":"sichuan","city":"chengdu"},

"favourite":["apple","banana"],

"birthday":new Date("2010-09-10 11:11:12"),

"pic":"D:\a.png"

}

db.user.insert(single)

var single = {"name":"very","password":"12345","age":"56",

"address":{"province":"sichuan","city":"chengdu"},

"favourite":["apple","banana"],

"birthday":new Date("2010-09-10 11:11:12"),

"createDate":new Date(2010,2,1)

}

db.user.insert(single)

注:在mongdb中不支持批量新增的,批量新增需要通过for循环实现

3、查询数据

查询年龄 age > 20

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

db.user.find("this.age > 20");

db.user.find({$where: "this.age > 20"});

查询年龄 age >= 20

db.user.find({"age": {$gte: "20"}})

查询 createDate > 2010-01-01 and createDate <= 2010-11-31

db.user.find({"createDate": {$gt: new Date(2010,1,1), $lte: new Date(2010,11,31)}});

查询不匹配name=v*带头的记录

db.user.find({"name": {$not: /^v.*/}});

选择返回age和_id字段(_id字段总是会被返回,且前部分必须包含{})

db.user.find({}, {"age":true});

选择返回age、address和_id字段

db.user.find({}, {"age":true},{ "name" : true });

$exists判断字段是否存在

查询所有存在name字段的记录

db.user.find({"age": {$exists: true}});

查询所有不存在phone字段的记录

db.user.find({"age": {$exists: false}});

$type判断字段类型

查询所有name字段是字符类型的

db.user.find({"name": {$type: 2}});

查询所有age字段是整型的

db.user.find({"age": {$type: 16}});

排序sort()

以年龄升序asc

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

以年龄降序desc

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

限制返回记录数量limit()

返回1条记录

db.user.find().limit(1);

返回2条记录并打印信息

db.user.find().limit(2).forEach(function(users) {print('my age is ' + users.age)});

限制返回记录的开始点skip()

从第1条记录开始,返回2条记录(limit 1,2)

db.user.find().skip(1).limit(2);

查询记录条数count()

db.user.find().count();

db.user.find({"age":"56"}).count();

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

db.user.find().skip(1).limit(2).count();

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

db.user.find().skip(1).limit(2).count(true);

今天到这里为止,明天继续学习集合函数 和 其他操作(更新操作)

现在所有的学习都是在命令的情况进行的,后面将学习使用java代码进行实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: