MongoDB插入查询数据

插入:

use keke

自动在写入数据后产生keke数据库。

> j = { name : "mongo" };
{"name" : "mongo"}
> t = { x : 3 };
{ "x" : 3  }
> db.things.save(j);
> db.things.save(t); 

查询

> 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 }
> 

 

使用游标时候请注意占用内存的问题特别是很大的游标对象有可能会内存溢出所以应该用迭代的方式来输出下面的示例则是把游标转换成真实的数组类型:

> var arr = db.things.find().toArray();
> arr[1]
{ "_id" : ObjectId("501c7e65ab2f3c46faf8e68b"), "x" : 3 }
> 

 

 

 

posted on 2012-08-04 10:07  keke3399  阅读(394)  评论(0编辑  收藏  举报