gpt4 book ai didi

JavaScript 对象 vs minimongo 效率

转载 作者:行者123 更新时间:2023-12-03 02:55:03 24 4
gpt4 key购买 nike

我的 Meteor 客户端从服务器接收数据并将其存储在 minimongo 中。这些数据保证在 session 期间不会更改,因此我不需要 Meteor 的 react 性。静态数据恰好通过该路径到达;让我们把它当作给定的。

数据如下所示:

{_id: 'abc...', val: {...}}

在客户端,使用以下方式查找值对我来说是否更有效:

val_I_need = Collection.findOne({id})

或者创建一个 JavaScript 对象:

data = {}
Collection.find().fetch().map((x) => {data[x._id] = x.val})

并用它来查找:

val_I_need = data[id]

是否存在一个临界点,无论是在数据大小还是查找次数方面,更有效的方法都会发生变化,或者超过构建对象的初始成本?

最佳答案

FindOne 在较大的数据集上可能会更有效,因为它使用游标进行查找,其中 _id 是索引键,而 find().fetch() 方法需要获取所有文档,然后通过映射手动迭代。

请注意,findOne 也可以替换为 .find({_id:desiredId}).fetch()[0](假设它返回所需的文档)。

有关此内容的更多信息,请参阅 mongo documentation on query performance .

但是,如果它只涉及一个随后不进行 react 性跟踪的对象,我宁愿通过服务器的“findOne”返回方法加载它:

export const getOne = new ValidatedMethod({
name: "getOne",
validate(query) {
// validate query schema
// ...
},
run(query) {

// CHECK PERMISSIONS
// ...

return MyCollection.findOne(query);
});

这可以避免在当前客户端模板上使用发布/订阅,从而避免使用此集合的 minimongo。想想 pub/sub 已经初始化了一些 react 性来观察集合,因此在某处消耗了一些计算。

关于JavaScript 对象 vs minimongo 效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47670134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com