首页 > 解决方案 > 如何使用 dynamoose 进行跳过、排序和限制?

问题描述

我以前使用过 MongoDB 和 mongoose,现在尝试在我的应用程序中实现 dynamoose,如何在 dynamoose 中为下面显示的 mongoose 查询编写相同的查询?

return this.scan({ abcd: { $ne: null }, activeFlag: true }).skip(9 * (page - 1)).sort({ date: -1 }).limit(9)

我需要相同的 $ne - 不等于跳过排序并且还限制

标签: javascriptnode.jsamazon-dynamodbdynamoose

解决方案


Dynamoose 目前不支持skip功能。这主要是因为我理解 DynamoDB 在他们的平台上没有跳过类型的功能。

对于不相等的操作,您可以使用.not()Dynamoose 中的语法。

对于排序,您必须使用Query.descending()orQuery.ascending()语法而不是Scan.

Query.limit()您可以使用或限制 DynamoDB 将扫描或查询的项目数Scan.limit()。请记住,这会限制在应用任何过滤器之前在 DynamoDB 上扫描或查询的项目数量。因此,如果您在扫描或查询中过滤掉项目,则限制将限制甚至考虑用于过滤器的项目数量。

最后,重要的是要了解,尽管 Dynamoose 深受 Mongoose 的启发,但它并不是一个即插即用的替代品。MongoDB 和 DynamoDB 之间有一些主要的基本概念非常不同,这使得即插即用系统基本上是不可能的。

因此,我强烈建议您通读 Dynamoose 和 DynamoDB 文档,以了解 DynamoDB 的优势和局限性,并确保它真正满足您给定项目的需求。

当然,您可以通过编写自己的代码在 Dynamoose 回调函数内部从 DynamoDB 返回结果后做任何您想做的事情,但取决于您有多少结果、表中有多少项目、您有多快需要这样,等等,这可能不是一个很好的选择。因此,尽管您所要求的一切都可以通过编写自己的代码来实现,但它有可能不如 MongoDB,因为我对 MongoDB 的了解不如 DynamoDB,而且因为我不知道那些特定的 Mongoose 功能是如何工作的,我真的不能说。


推荐阅读