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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值