我的数据库中有一个名为example的集合,如下所示:
{
"event" : "cheat",
"message" : {
"tableid" : 398,
"time" : 1381853438870,
"link" : "/dbcheat/table398/iID485"
},
"_id" : ObjectId("525d68fe99ddc6a019000008")
}
有成千上万的这样的记录,我想寻找前50个。
我研究过,最好的方法是使用forEach()函数。我习惯于SQL,刚开始使用Mongo,并且了解objectID是唯一的,但我无法从中获得订单。
var cursor = db.example.find();
cursor.forEach(function(x){
console.log(x.message);
});
但我收到错误是因为某些原因因为x总是空的。
知道可能出现什么问题吗?
答案 0 :(得分:1)
你必须在find()for function(错误,游标)和该游标中添加一个处理程序,假设错误为null且游标存在,那么你就做了cursor.toArray(函数(错误,数据))
在第一个中,您必须等待数据到来并期待错误。 在第二个中,光标将变为可用的jsons数组:>这就是你需要的。
db.example.find( function( error, cursor)
{
if( error || !cursor)
{
console.log("error getting items");
}
else
{
cursor.toArray( function( error, items)
{
if( error || !items)
{
console.log("error getting items");
}
else
{
console.log( JSON.stringify( items ) );
}
});
});
}
答案 1 :(得分:0)
要查看“前50个”,您可能希望按时间对文档进行排序,并将查询结果限制为最初的50个。
db.coll.find().sort({"message.time":1}).limit(50)
然后,您可以在游标上使用toArray()方法并访问该数组中的文档。
答案 2 :(得分:0)
要打印第一个X编号,您可以使用以下模式:
db.example.find().limit(x);
其中x是一个整数,指定集合的第一个x
元素
如果你想让它们全部使用
db.example.find()
如果您想跳过第一个y
元素并打印下一个x
,请使用类似
db.example.skip(y).limit(x);
还要进行一些排序,你可以使用时间字段。