当前位置: 首页 > 知识库问答 >
问题:

无法在Azure Cosmos DB上从我的mongodb获取所有文档

江文斌
2023-03-14

我正在尝试从我在Azure上的Cosmos DB中的集合中获取所有文档。该集合包含大约50.000个文档。

我收到以下错误:MongoError:光标不存在、被杀死或超时

const mongoose = require('mongoose');
const mongooseOptions = { useNewUrlParser: true };
mongoose.connect(connectionString, mongooseOptions);
mongoose.set('useCreateIndex', true);
mongoose.Promise = global.Promise;
const mongoDB = mongoose.connection;
mongoDB.on('error', console.error.bind(console, 'MongoDB connection error:'));

const Schema = mongoose.Schema;
const MongoEidModelSchema = new Schema({
    uid: { type: String, unique: true },
    eid: { type: String, unique: true }
});

const MongoEidModel = mongoose.model('eids', MongoEidModelSchema);
MongoEidModel.find({}, {timeout: false}).then(data => {
    console.log(data);
    console.log(Object.keys(data).length);
});

当我在find()上设置1000或1500的限制时,它会起作用。

我还测试了将集合上的RU/s从400更改为10.000(在Azure门户/控制台中),这也有效,但这似乎是一个昂贵的解决方案...不是吗?

我还测试了在递归循环中使用find()批量获取该文件,直到没有更多文档,每次迭代之间都有一个睡眠(否则Cosmos DB会在一段时间后给我“429:太多请求”)。

有没有一种方法可以让我使用Node获取所有50000个文档。js和Mongoose不改变RU/s或做递归循环?

提前谢谢!

/丹尼尔

共有1个答案

段干麒
2023-03-14

为了避免混淆,我假设您正在使用MongoDB驱动程序访问Azure中的Cosmos?

对于MongoDB,查询限制为16Mb(如果您返回50k文档,很可能会超过这个限制)。请参阅此处:https://docs.mongodb.com/manual/reference/limits/

节点驱动程序中可能没有强制执行该限制(我还没有检查其源代码),在这种情况下,值得参考Azure文档:https://docs.microsoft.com/en-us/azure/cosmos-db/faq

结果是,当您处理像这样的大量文档时,您真的应该使用光标在集合中游走。请参阅此处:如何使用N在MongoDB中使用cursor.foreach()ode.js?

希望这有助于:)

 类似资料:
  • 我想从一个集合中得到所有的文件,然后用它们,得到他们的身份证。这里我的集合如何是用户集合,它只是一个集合和多个文档。我试了一下,但不起作用: 更新

  • 我无法在这个网站上找到所有的文字——https://niftygateway.com/marketplace 使用这个简单的代码-

  • 我用Discord.js编写了一个不和谐机器人,它曾经获得不和谐服务器的所有用户(我只有一个不和谐服务器中的机器人),但现在它只有59个成员。我在服务器上有300个不和谐的用户。

  • 问题内容: 我使用新的Google驱动器api,但无法从Google驱动器中获取所有文件夹,只能获取使用Google驱动器api创建的文件夹…有人知道为什么会这样吗? 这是我的代码: 现在,我想查看rootFolder驱动器中的所有文件夹,我尝试了requestSync(),但结果是相同的……请提供帮助! 另一个问题:如何设置AppFolder?我只看到getAppFolder,但如何设置? 谢谢

  • 问题内容: 我有一个文件,称之为。 有没有一种方法可以“读取”其中的内容,并获取其中的所有类的列表作为完整的类名,包括其包,例如? 我在考虑,但是似乎找不到用于检索整个类集的方法。 问题答案: 您可以将dexlib2库用作独立库(在maven中可用),以读取dex文件并获取类列表。 请注意,类名将采用“ Ljava / lang / String;”的形式,这就是它们如何存储在dex文件(和Jav

  • 问题内容: 使用来获取Cookie 似乎很简单,它似乎将Cookie存储在其他位置。 我做了一些研究,然后从对象中获取了一些Cookie 。但是,其中不包含: 奇怪的是,ios 9中还有一个类负责管理中的cookie ,但是,该类不包含用于检索cookie数据的公共方法: 是否有解决方法来获取Cookie数据? 问题答案: 最后,对于登陆iOS的11。 https://developer.appl