美文网首页
MongoDB数据库文档练习

MongoDB数据库文档练习

作者: 似朝朝我心 | 来源:发表于2020-10-30 20:12 被阅读0次

    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)

    • 比如分类和商品

    相关文章

      网友评论

          本文标题:MongoDB数据库文档练习

          本文链接:https://www.haomeiwen.com/subject/mfglvktx.html