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

来源:互联网 发布:目标软件倒闭 编辑:程序博客网 时间:2024/05/21 04:18

昨天学习了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代码进行实现。

原创粉丝点击