MongoDB的一些语法

1.创建数据库(以电影数据库为例)

use tutorial (数据库名)

show database(查看)

db.createCollection('movie') (创建集合)

show collections

2.插入数据

insert操作有几点需要注意:

  • 不同key-value需要用逗号隔开,而key:value中间是用冒号;
  •  如果一个key有多个value,value要用[]。哪怕当前只有一个value,也加上[]以备后续的添加;
  •  整个“数据块”要用{}括起来;
  •  批量插入的格式是这样的:db.movie.insert([{movie1},{movie2}])
db.movie.insert(
 {
   title: 'Forrest Gump', 
   directed_by: 'Robert Zemeckis',
   stars: ['Tom Hanks', 'Robin Wright', 'Gary Sinise'],
   tags: ['drama', 'romance'],
   debut: new Date("1994-07-06T00:00:00"),
   likes: 864367,
   dislikes: 30127,
   comments: [	
      {
         user:'user1',
         message: 'My first comment',
         dateCreated: new Date("2020-10-15T00:00:00"),
         like: 0 
      },
      {
         user:'user2',
         message: 'My first comment too!',
         dateCreated: new Date("2019-04-15T00:00:00"),
         like: 0 
      }
   ]
}
)

3. 查询

  • 单条件查询:db.movie.find({'directed_by':'David Fincher'}).pretty()
  • 多条件查询:db.movie.find({'directed_by':'David Fincher' ,'tags’:'romance'}).pretty() 

  上面是and的关系,or的关系查询语法如下:

db.movie.find(
{
  $or: 
     [  {'stars':'Robin Wright'}, 
        {'stars':'Morgan Freeman'}
     ]
}).pretty()

找出50万以上人赞的电影:

db.movie.find({'likes':{$gt:500000}}).pretty()

类似的运算符还有:$lt:小于;$lte:小于或等于;$gte:大于或等于;$ne:不等于。

如果你确切地知道返回的结果只有一个,也可以用findOne,findOne()自带pretty模式,所以不能再加pretty(),将报错。

如果结果很多而你只想显示其中一部分,可以用limit()skip(),前者指明输出的个数,后者指明从第二个结果开始数。

db.movie.find().limit(2).skip(1).pretty()
  • 局部查询

find的第二个参数是用来控制输出的,1表示要返回,而0则表示不返回。默认值是0,但_id是例外,因此如果你不想输出_id,需要显式地声明。

db.movie.find({'tags':'drama'},{'debut':1,'title':1,'id':0}).pretty()

4.更新数据库

  • updateOne(更新一部)/updateMany(更新全部符合条件的)

第一个大括号里表明要选取的对象,第二个表明要改动的数据。MongoDB提供了一种简便的方法,即 $inc 可以对现有条目进行增量操作。假设又有人对《七宗罪》点了两个赞,则可以:

db.movie.updateOne({title:'Seven'}, {$inc:{likes:2}})
db.movie.updateMany({}, {$inc:{likes:10}})

$push操作

db.movie.updateOne({'title':'Seven'}, {$push:{'tags':'popular'}})

5.删除条目

与更新语法类似,删除一条则是deleteOne,多条为deleteMany。

db.movie.deleteOne({'tags':'romance'})

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值