1.创建(进入)mytest数据库
use mytest
2.向数据库的users集合插入一个随机文档。
db.users.insert({
username: "张三"
})
3.检查当前数据库和和当前集合有没创建成功。
show dbs | show database
show collections
4.查询users集合当中的文档。
db.users.find();
5.统计当前数据库中users集合中的文档数量。
db.user.find().count();
6.查询数据库users集合中username为张三的文档。
db.users.find({username: "张三"})
7.向数据库users集合中的username为张三的文档,添加一个address属性,属性值为深圳龙岗。
db.users.update(
{username: "张三"},
{$set:{address: "深圳龙岗"}}
)
8.将username: "张三" 替换为 username:"李四"。
db.users.replaceOne({username:"张三"},{username:"李四"})
9.删除username为李四的文档的address属性。
db.users.update({username:"李四"},{$unset:{address:1}})
10.向username为"李四"的文档中添加一个hobby:{cities:["上海","北京","广州"],movies:["卡通","惊悚","科幻"]}属性。(嵌套文档操作)
db.users.update({username:"李四"},
{$set:{hobby:{cities:["上海","北京","广州"],movies:["卡通","惊悚","科幻"]}}})
11.查询李四爱好movie中卡通的嵌套文档。
- MongoDB支持直接通过内嵌文档的属性进行查询,如果要查询内嵌文档则可以通过.的形式来匹配,此时的属性名必须使用引号。
db.users.find({'hobby.movies':"卡通"})
12.向李四中添加一个新的电影类型:爱情。
- $push 用于向数组中添加一个新对元素(元素可以重复添加)
- $addToSet 也是向数组中添加一个新对元素(如果数组中的元素已经存在,则不会重复添加)
db.user.update({username:"李四"},{$push:{"hobby.movies":"爱情"}})
13.删除喜欢北京的用户。
db.users.remove({"hobby.cities":"北京"})
14.清空users集合。
db.users.remove({})
15.删除users集合(默认会把数据库也给删除了)。
db.users.drop()
16.新建一个myTest数据库,通过for循环向numbers集合中插入200条数据(数据即文档),并且统计当前数据数量是否够数。(tip:要点击文件刷新)
use myTest //我使用的是RoBo 3T可视化工具,并在一起写,发现不会生效,所以要分两步走。
for (var i=1 ; i<=200 ; i++) {
db.numbers.insert({num:i})
}
db.numbers.find().count()
17.如果我们想向numbers集合插入20000条数据而不仅仅是200条数据呢,有没有性能高一点的法子?因为for遍历循环,意味着insert方法要执行3000次,性能肯定是差的了。
var arr = [];
for (var i=1 ; i<=20000 ; i++) {
arr.push({num:i})
}
db.numbers.insert(arr)
db.numbers.find()
18.查询numbers集合中num为500的 文档。
db.numbers.find({num:500})
或者
db.numbers.find({num:{$eq:500}})
19.查询numbers集合中num大于500的文档。
db.numbers.find({num:{$gt:500}})
20.查询numbers集合中num小于30的文档。
db.numbers.find({num: {$lt:30}});
21.查询numbers集合中num大于40小于50的文档。
db.numbers.find({num:{$gt:40, $lt:50}})
22.查看numbers集合中的前10条数据。
db.numbers.find({nums:{$lte:10}}) //当数据是有序的时候,可以使用这个方法。
或者使用limit()方法,设置数据显示的上限,限制显示数据条目。
db.numbers.find().limit(10)
//无论数据是有序还是无序,皆可用limit()方法,即带条件的查询方式,实现的就是一种分页的功能。
你可以这样理解:limit(10)方法,1页显示10条数据。
23.查看numbers集合中的第11-20条的数据。
db.numbers.find().skip(10).limit(10)
skip()方法,用于跳过指定数量的数据。
skip(10),即跳过前面的前10条数据,limit(10)即1页显示10条数据。
24.导入集合进入我们的数据库,这里的集合就是.json文件。
文档间的联系
MongoDB中文档之间呈现的关系分为三种。
一对一的关系(即one to one)
- 比如生活中的夫妻 (一个丈夫 对应 一个妻子)
- 在MongoDB中,可以通过内嵌的文档形式体现出一对一的文档关系
db.wifeAndHusband.insert({
{
name: "John",
husband:{
name:"Lily"
}
}
})
db.wifeAndHusband.find()
一对多的关系(one to many)或者多对一的关系(many to one)
- 比如父母和孩子们。
- 文章--评论
- 下面以用户(users)--订单(orders)为例子。
多对多的关系(many to many)
- 比如分类和商品
网友评论