我是nodejs的新手,我想搜索大数据,如何在不使用skip()和limit()的情况下搜索文档,我的数据库结构是
{
"_id" : ObjectId("5a9d1836d2596d624873c84f"),
"updatedAt" : ISODate("2018-03-05T10:13:10.248Z"),
"createdAt" : ISODate("2018-03-05T10:13:10.248Z"),
"phone" : "+92333333",
"country_code" : "+92",
"verified_user" : false,
"verification_code" : "2951",
"last_shared_loc_time" : ISODate("2018-03-05T10:13:10.240Z"),
"share_loc_flag_time" : ISODate("2018-03-05T10:13:10.240Z"),
"share_location" : true,
"deactivate_user" : false,
"profile_photo_url" : null,
"__v" : 0
}
如何使用createdAt进行搜索。 我需要一个mongodb查询,它向api请求并显示用户
答案 0 :(得分:0)
{
uid : 1,
name: 'abc'
...
}
{
uid : 2,
name: 'abc'
...
}
....
{
uid : 10,
name: 'abc'
...
}
{
uid : 11,
name: 'abc'
...
}
现在,您可以像uid > 0
和uid <5
然后在下一个广告位中获取数据,uid > 5
和uid <10
就像明智一样......
可能这个approcah可以帮助你
答案 1 :(得分:0)
当我们在MongoDB中拥有大数据时,建议不要使用skip()
,因为始终要求服务器从集合的开头走,您可以使用_id
索引与limit()
进行操作分页,因为_id
字段在MongoDB中默认编入索引,因此您可以使用此字段获得良好的性能。
对于第一页,您需要使用_id
获取上一个文档的limit()
值:
db.users.find().limit(8);
last_id = id;
其次,下一页将最后_id
值与下一个_id
进行比较:
db.users.find({'_id' > last_id}).limit(8);
例如假设第一个_id
等于1000
所以:
1000 < 1008 ==> PAGE 1 where last_id=1008
1008 < 1016 ==> PAGE 2 where last_id=1016
1016 < 1024 ==> PAGE 3 where last_id=1024