MongoDB命令和查询备忘录
由于最近有机会接触到MongoDB,所以我整理了一下常用的MongoDB命令和查询。
数据库列表
show dbs
选择使用的数据库、创建数据库
use dbname
如果没有数据库,就会创建一个。
删除数据库
db.dropDatabase()
收藏列表
show collections
收藏品复制
db.collectionname.copyTo("collectionname2")
创建收藏夹
db.createCollection("collectionname")
删除收藏
db.collectionname.drop()
搜索结果显示
db.collectionname.find({}).orderBy({col1: 1}).limit(10).skip(10).toArray()
db.collectionname.find({col1: "aaa", col2: {$ne: "bbb"}, col3: {$lt: 10}}, {col1: true}).sort({col1: 1, col2: -1}).limit(10).skip(10).toArray()
找到的第二个参数是指定要显示或隐藏的列。
排序的值为1表示升序,-1表示降序。
跳过相当于MySQL等数据库的偏移量(offset)。
数据创建
db.collectionname.insert({col1: "aaa", col2: "bbb", col3: "ccc"})
数据更新
db.collectionname.update({col1: "aaa"}, {$set: {col1: "aaaa", col2: "bbbbb", col4: {a: 1, b: 2} }})
如果不设置”$set”,数据将被完全更改为指定的内容,所以请注意。
db.collectionname.update({col1: "aaaa"}, {$unset: {col2: 1, col4.a: 1}})
在中国,根据$unset指定的值不会产生影响。您也可以只对特定的嵌套数值进行unset,例如col4.a。
db.collectionname.update({col1: "aaaa"}, {$unset: {col2: 1, col4.a: 1}, {upsert: false, multi: true}})
默认情况下,update只会更新一个数据。如果要更新多个数据,可以添加参数,并指定multi: true选项。
当将upsert选项设置为true时,如果没有相应的数据,将会创建该数据。
数据库转储
mongodump --db databasename --out dirname
指定的目录将被创建,并在其中以数据库名称的目录/每个文件的形式创建json和bson文件。
数据库恢复
mongorestore --db databasename dirname
dirname参数用于指定转储文件或文件所在的目录名称。
如果指定了不存在的数据库名称,将创建该数据库。