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参数用于指定转储文件或文件所在的目录名称。
如果指定了不存在的数据库名称,将创建该数据库。