MongoDB插入查询数据(一)
MongoDB插入查询数据(一)
插入:
use keke
自动在写入数据后产生keke数据库。
> j = { name : "mongo" };
{"name" : "mongo"}
> t = { x : 3 };
{ "x" : 3 }
> db.things.save(j);
> db.things.save(t);
查询 www.zzzyk.com
> db.things.find();
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" }
{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 }
> var cursor = db.things.find();
> while (cursor.hasNext()) printjson(cursor.next());
{ "_id" : ObjectId("501c7e5cab2f3c46faf8e68a"), "name" : "mongo" }
{ "_id" : ObjectId("501c7e65ab2f3c46faf8e68b"), "x" : 3 }
上面的例子显示了游标风格的迭代输出. hasNext() 函数告诉我们是否还有数据, 如果有则可以调用 next() 函数.
当我们使用的是 JavaScript shell, 可以用到JS的特性, forEach 就可以输出游标了. 下面的例子就是使用 forEach() 来循环输出: forEach() 必须定义一个函数供每个游标元素调用.forEavh注意大小写,javascript区分大小写。
> db.things.find().forEach(printjson);
{ "_id" : ObjectId("501c7e5cab2f3c46faf8e68a"), "name" : "mongo" }
{ "_id" : ObjectId("501c7e65ab2f3c46faf8e68b"), "x" : 3 }
在 MongoDB shell 里, 我们也可以把游标当作数组来用:
> var cursor = db.things.find();
> printjson(cursor[1]);
{ "_id" : ObjectId("501c7e65ab2f3c46faf8e68b"), "x" : 3 }
> www.zzzyk.com
使用游标时候请注意占用内存的问题, 特别是很大的游标对象, 有可能会内存溢出. 所以应该用迭代的方式来输出. 下面的示例则是把游标转换成真实的数组类型:
> var arr = db.things.find().toArray();
> arr[1]
{ "_id" : ObjectId("501c7e65ab2f3c46faf8e68b"), "x" : 3 }
>
作者 keke3399