mongodb谁开发的,mongodb开源
选择一个数据库。
启动mongoshell后,默认情况下,您的会话将使用测试数据库作为上下文。每当您在mongo中输入以下命令时,都会显示当前数据库:
使用db操作指令确认您的会话使用mydb数据库作为上下文,它将返回当前数据库的名称:
此时,如果再次输入showdbs操作指令,结果将不会包含mydb,因为如果您没有将数据插入该数据库,MongoDB将不会创建该数据库。创建收藏并插入文档。本节描述插入数据的过程。
2.4版的新特性:showdatabases也返回数据库列表。
显示mongo帮助文本
在任何时候,您都可以在mongoshell中使用以下操作来获取帮助文本:
此外,还可以追加。help()到一些JavaScript方法、任何游标对象以及db和db.collection对象,以返回附加的帮助信息。
创建收藏并插入文档。
在本节中,您将学习将文档插入到mydb(一个新的数据库)中的新集合中。
MongoDB在第一次使用时会隐式地创建集合和数据库:在插入数据之前不需要创建数据库或集合。此外,因为MongoDB使用动态模式,所以在将文档插入集合之前,不需要指定文档的结构。
插入单个文档
在mongoshell中使用以下操作指令来确认当前上下文是mydb数据库:
如果前面的操作指令mongo没有返回mydb,使用下面的操作指令用mydb的上下文设置数据库:
使用下面的操作序列将两个文档J和K插入到集合things中:
当插入第一个文档时,mongod创建mydb数据库和things集合。
对things集合执行查询操作,以确认文档存在于things集合中。在如下操作中使用find()方法:
{ _ id :ObjectId( 4c 2209 F9 f 3924d 31102 BD 84 a ), name : mongo }
{ _ id :ObjectId( 4c 2209 fef 3924d 31102 BD 84 b ), x : 3 }
所有MongoDB文档都必须有一个unique _id字段。这些操作没有显式地为_id字段指定值,所以mongo在将该字段插入集合之前会为它创建一个惟一的ObjectId值。
在mongoshell中,可以使用for循环向things集合添加多个文档:
{ _ id :ObjectId( 4c 2209 F9 f 3924d 31102 BD 84 a ), name : mongo }
{ _ id :ObjectId( 4c 2209 fef 3924d 31102 BD 84 b ), x : 3 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 856 ), x : 4, j : 1 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 857 ), x : 4, j : 2 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 858 ), x : 4, j : 3 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 859 ), x : 4, j : 4 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85 a ), x : 4, j : 5 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85b ), x : 4, j : 6 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85 c ), x : 4, j : 7 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85d ), x : 4, j : 8 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85 e ), x : 4, j : 9 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85 f ), x : 4, j : 10 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 860 ), x : 4, j : 11 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 861 ), x : 4, j : 12 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 862 ), x : 4, j : 13 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 863 ), x : 4, j : 14 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 864 ), x : 4, j : 15 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 865 ), x : 4, j : 16 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 866 ), x : 4, j : 17 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 867 ), x : 4, j : 18 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 868 ), x : 4, j : 19 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 869 ), x : 4, j : 20 }
有关插入新文档的更多信息,请参见insert()文档。
使用光标
当您查询一个集合时,MongoDB将返回一个包含查询结果的游标对象。然后mongoshell遍历光标显示所有结果。shell遍历光标20次以显示前20个结果,然后等待遍历剩余结果的请求,而不是一次返回所有结果。这可以防止mongo一次显示几千甚至几百万个结果。
it操作允许您在shell中遍历接下来的20个结果。在前面的步骤中,光标只包含另外两个文档,因此只显示另外两个文档。
本节中的步骤展示了使用游标的其他方法。有关更易于理解的游标文档,请参见遍历返回的游标。
使用循环遍历光标
在MongoDB的JavaScript shell中,查询things集合,将生成的cursor对象赋给变量C:
如果光标有一个文档,hasNext()函数返回true。next()方法返回下一个文档。printjson()方法将文档呈现为类似json的格式。
操作的结果如下,并且ObjectId值是唯一的:
{ _ id :ObjectId( 4c 2209 F9 f 3924d 31102 BD 84 a ), name : mongo }
{ _ id :ObjectId( 4c 2209 fef 3924d 31102 BD 84 b ), x : 3 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 856 ), x : 4, j : 1 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 857 ), x : 4, j : 2 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 858 ), x : 4, j : 3 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 859 ), x : 4, j : 4 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85 a ), x : 4, j : 5 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85b ), x : 4, j : 6 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85 c ), x : 4, j : 7 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85d ), x : 4, j : 8 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85 e ), x : 4, j : 9 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 85 f ), x : 4, j : 10 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 860 ), x : 4, j : 11 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 861 ), x : 4, j : 12 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 862 ), x : 4, j : 13 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 863 ), x : 4, j : 14 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 864 ), x : 4, j : 15 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 865 ), x : 4, j : 16 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 866 ), x : 4, j : 17 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 867 ), x : 4, j : 18 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 868 ), x : 4, j : 19 }
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 869 ), x : 4, j : 20 }
将游标用于数组操作
您可以将光标对象作为数组来操作。请参考以下步骤:
1.在mongoshell中,查询things集合并将生成的cursor对象赋给变量c:
varc=db.things.find()
2.使用以下操作在数组中查找索引为4的文档:
printjson(c[4])
MongoDB返回以下结果:
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 858 ), x:4, j:3}
在游标中使用数组索引符号访问时,mongo首先调用cursor.toArray()方法,将游标返回的所有文档加载到RAM中。然后,该索引可用于生成的数组。该操作完全遍历光标并耗尽它。
对于非常大的结果集,mongo可能会耗尽可用内存。
有关游标的更多信息,请参见遍历返回的游标。
查询指定的文档。
MongoDB有一个强大的查询系统,它允许您选择和过滤集合中的文档以及指定的字段和值。关于MongoDB中的所有查询,请参见查询文档和阅读。
在这个过程中,通过将“查询文档”作为参数传递给find()方法,可以查询things集合中的指定文档。查询文档指定查询返回文档时必须匹配的条件。
按照以下步骤查询指定的文档:
在mongoshell中,通过将查询文档{name:mongo}作为参数传递给find()方法,查询名称字段值为mongo的所有文档:
将{x:4}这个查询文档传递给find()作为参数,查询x字段值为4:
{ _ id :ObjectId( 4c 220 a 42 f 3924d 31102 BD 856 ), x : 4, j : 1 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 857 ) x :4, j :2 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 858 ) x :4, j :3 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 859 ), x : 4, j :4 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85 a ), x : 4, j :5 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85 b ), x : 4, j :6 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85 c ), x : 4, j : 7 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85d ), x : 4 , j :8 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85 e ), x : 4, j :9 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85 f ), x : 4, j : 10 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 860 )x :4, j : 11 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 861 ) x :4, j : 12 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 862 ):x :4, j :13 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 863 )x :4, j :14 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 864 ) x :4, j : 15 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3112 BD 865 ) x :4, j : 16 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3112 BD 866 ) x :4, j : 17 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 867 ):x :4, j :18 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 868 ) x :4, j : 19 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 869 ) x :4, j : 20 }
像前面一个查询一样查询所有x个字段值为四的文档,但仅返回j。你好的值。蒙戈布也会返回_id字段值,除非你显示地排除。你可以在查找()方法的第二个参数上添加{j:1}文档作为投影。操作类似以下这样:
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 856 ), j:ˇ
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 857 ), j:2 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 858 ), j:}
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 859 ), j:
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85 a ), j:5 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85 b ), j:6 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85 c ), j:7 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85d ), j:8 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85 e ), j:9 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 85 f ),j:` 10 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 860 ), j:11 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 861 )j:ˇ12 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 862 ), j:13 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 863 ), j:14 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 864 )j:ˇ15 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 865 ), j:16 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 866 ), j:ˇ17 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 867 )j:ˇ18 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 868 ), j:19 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 869 ),j:` 20 }
限制结果集中的文档数目
通过限制你的应用程序必须通过网络获取的数据量,你可以限制结果集的数量来提升性能。
想要指定结果集中文档的最大数量,在游标上调用限制()方法,如下:
{ _ id:对象id( 4c 2209 F9 f 3924d 3102 BD 84 a )名称:蒙戈
{ _ id :对象id( 4c 2209 fef 3924d 3102 BD 84 b ), x :3 }
{ _ id :对象id( 4c 220 a 42 f 3924d 3102 BD 856 ), x : 4, j :1 }
注:本文翻译自http://份文件。mongbd。org/manual/tutorial/getting-started/# insert-个人文档,敬请指正。