mongodb主要的命令:
mongo
db - 显示当前所在的数据库
show dbs - 显示所有的数据库
use database - 切换到某个数据库
help - 帮助
collectionName = { field : value } - 创建一个新的名为collectionName的集合
db.collectionName.insert(documentName) - 往名为collectionName的集合中插入新的名为documentName的稳定
db.collectionName.find() - 在collectionName这个集合中查询所有的文档
it - 展示下一个结果集
MongoDB会自动在你第一次使用某个集合的时候,隐式创建对应的集合。你是不需要事先手动创建集合。如上,当你输入db.collectionName.insert(documentName)的时候,即你第一次往这个集合插入一个文档的时候,mongod会自动创建对应的数据库db和集合collectionName。另外,因为MongoDB使用dynamic schemas,所以再插入之前,你也不需要声明文档的结构
使用指针
当你查询一个集合的时候,MongoDB会返回一个“指针”对象,这个指针会指向查询的结果。mongo会根据这个指针展示查询结果。mongo通过移动这个指针20次来展示前20个结果,然后在接收到下一次的请求后再继续移动指针,直至展示完所有的查询结果,而不是立马返回所有的查询结果。详细的信息可以查看Iterate the Returned Cursor。
在循环中移动指针
接下来,我们来看一个例子,看看如何在循环中移动指针。假设我们现在有一个数据库叫做test,以及一个集合叫做testData,并且已经忘这个集合中插入了25个文档。
在shell中,查询集合testData,并且将指针指赋予变量c:
var c = db.testData.find()
通过while循环来迭代移动指针来展示所有的查询结果:
while ( c.hasNext() ) printjson( c.next() )
其中,方法hasNext()用来检查是否还有下一个文档,方法next()用来返回下一个文档,而方法printjson()来用json相似的格式来展示一个文档。上面这个操作会展示所有的20个文档。假如文档只有一个简单的域x,则这个操作会显示这个域,以及每个文档的ObjectId:{ “_id” : ObjectId(“51a7dc7b2cacf40b79990be6”), “x” : 1 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990be7”), “x” : 2 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990be8”), “x” : 3 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990be9”), “x” : 4 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bea”), “x” : 5 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990beb”), “x” : 6 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bec”), “x” : 7 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bed”), “x” : 8 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bee”), “x” : 9 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bef”), “x” : 10 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bf0”), “x” : 11 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bf1”), “x” : 12 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bf2”), “x” : 13 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bf3”), “x” : 14 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bf4”), “x” : 15 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bf5”), “x” : 16 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bf6”), “x” : 17 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bf7”), “x” : 18 }
{ “_id” : ObjectId(“51a7dc7b2cacf40b79990bf8”), “x” : 19 } { “_id” : ObjectId(“51a7dc7b2cacf40b79990bf9”), “x” : 20 }
查询特定的文档
MongoDB有很强大的查询系统,能够让你根据特定的域和值来选择和过滤集合中的文档。你可以在Query Document和Read Operations查看到关于MongoDB查询的详细描述
假如你在方法find()中加入参数“query document”,则这个方法会返回一个查询文档,来说明一个查询语句要查询某个文档所需要满足的条件。
假如,我们需要查询域x的值为10的文档,则只需要将参数{x : 10}传给方法find()便可:
db.testData.find( { x : 19} )
然后,MongoDB就会返回所有满足这个约束的文档:
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bf7"), "x" : 18 }
返回一个特定文档
通过方法findOne()可以返回满足约束的一个文档。方法findOne()的参数与方法find()一样,只是前者返回一个文档,而后者则是一个指针。你可以在Query Document和Read Operations查看到详细的介绍。
你可以通过下面的这个命令来从集合testData中获得一个文档:
db.testData.findOne()
限制查询结果集中的文档数量
有时候为了提升性能,我们需要限制数据数量来控制查询结果的大小。我们可以通过方法limit()来规定结果集中文档的最大数量,比如db.testData.find().limit(3)。然后MongoDB会返回