node.js - 从 MongoDB 集合中的特定文档开始获取“n”个文档
问题描述
这是否可以n
从集合中获取文档数量,并且应该从特定对象开始获取。例如,如果一个集合有 100 个文档,那么我需要从 46 [特定 id] 开始的 10 个文档。即46-55
return new Promise((resolve, reject) => {
return products_model.find({'from_id' : 9677270841774}).limit(limit).exec((err, records) => {
if(err)
reject(err)
else
resolve(records)
})
})
编辑:原文档结构如下:
{
"_id" : ObjectId("6128a0d9cf34c208c30e6800"),
"id" : 3238425384636,
"title" : "i3jMH8CHPWY6Ru18KrmsDGdiyl2qDuFjxXD1M4yCzJHrOmSF8v",
"body_html" : "This is body",
"vendor" : NumberInt(1),
"__v" : NumberInt(0)
},
{
"_id" : ObjectId("6128a0d9cf34c208c30e6805"),
"id" : 30336405569734,
},
{},
{},
{},
{}
API是
http://localhost:3000/products.json?since_id=30336405569734&limit=10
解决方案
以 10ids 为例,我们希望从 4 开始获得 4 个 ids
- 过滤器 ID>=4
- 排序升序id
- 限制 2
对于您想要读取查询字符串然后您想要的数据, id>=30336405569734
并且limit 10
.(数字不是字符串)
您可以在 mongoose 中使用聚合。
db.collection.aggregate([
{
"$match": {
"id": {
"$gte": 4 // "$gte": 30336405569734 (for your data)
}
}
},
{
"$sort": {
"id": 1
}
},
{
"$limit": 2 // "$limit": 10 (for your data)
}
])
或者在猫鼬中写一个发现,我不使用猫鼬,但我认为它会是这样的。
products_model.find({ id: { $gte: 30336405569734 } })
.sort({id: 1})
.limit(10)
.then(products => {
console.log(products)
});
或者
await products_model.find({ id: { $gte: 30336405569734 } })
.sort({id: 1})
.limit(10));
推荐阅读
- sql - CHARINDEX - 从 nvarchar 中挑选日期
- html - minmax 行为,灵活的 CSS 网格
- python - 如何计算MongoDB中数组中的对象?
- machine-learning - 学习损失权重,因为它们是参数
- java - 如何使用 Micronaut 框架在 Redis 中存储 POJO?
- typescript - 打字稿:赋值表达式中类型注释后的问号(可空类型?)
- swift - 我该如何解决这个错误:无法识别的选择器发送到实例(LongPress onUIImageView)
- angular - 如何使用 v10 SDK 将图像上传到 Azure Blob 存储?
- r - 如何计算数据框中两行之间的jaccard相似度
- c# - 如何将字符串数组组件添加到 XML 配置?