mongodb是NOSQL数据库,Not Only SQL。面向集合的存储数据,不会像关系型数据库那样,需要固定的数据结构,一旦确定后期就很难修改。而mongodb的集合就相当于关系型数据库的表,存储的数据方式是以json的方式存储的。

总结:mongodb的最大特别优势就是--自由。

mongoose是nodejs中来操作mongodb的一个模块。

mongoose使用的一些语法和mongodb自身的一些语法不同。比如,在mongodb中插入一条数据使用的是db.[Collection].insert(),而在mongoose中插入数据使用的是creat()方法,这一点我自己应该格外注意一下。

下面,我会在mongodb和mongoose中来回增删改查数据。

数据库基本操作

  • use xxx打开/创建xxx数据库
  • db.xxx.???()对某个数据库的xxx集合进行???操作
  • db.dropDatabase()删除数据库
  • db.xxx.drop()删除xxx集合
  • mongoose连接数据库mongoose,connect('mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]')
  • mongodb数据库不需要刻意的创建集合,在我们插入数据的时候,会为我们自动创建;
  • 这里,特别需要注意的是,mongoose连接数据库集合时,默认情况下会为我们的集合名添加一个s,作为复数。
    我查阅资料找到了一些解决办法,经过测试,可以使用;

添加数据

  • db.xxx.insert() 下面两个方法的结合体
  • db.xxx.insertOne()插入一条数据,不能为数组
  • db.xxx.insertMany() 插入多条数据,必须是数组
  • Model.create() mongoose中插入数据的方法,和insert类似,支持一条或多条数据的插入

查询数据

  • db.xxx.find()查询所有符合条件的数据,支持空参,返回全部数据
  • db.xxx.findOne()查询第一条符合条件的数据,支持空参,返回第一条数据
  • mongoose的查询数据方法也相同,只是需要填写一个回调函数,参数为(err,data)

条件操作符

  • limit skip sort 分别是显示显示个数、跳过几个元素、排序,并且切换顺序都没有任何影响



  • 在mongoose内使用的情况

修改数据

  • db.xxx.update默认情况下修改一条数据,及时匹配到多个,如果需要修改多个,需要在第二参数的对象multi属性修改为true

删除数据

  • db.xxx.remove()

还有更多的小结,一下子想不起来了,后期再有空修改增补吧。

参考: