Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 在minimongo上执行fetch()时会发生什么_Mongodb_Meteor_Fetch_Minimongo - Fatal编程技术网

Mongodb 在minimongo上执行fetch()时会发生什么

Mongodb 在minimongo上执行fetch()时会发生什么,mongodb,meteor,fetch,minimongo,Mongodb,Meteor,Fetch,Minimongo,要在客户端mongodb实现上查询对象,我可以使用 MyModel.find(); // produces a lot of attributes, not useful 或 如果我不使用fetch,我会得到很多我不理解的属性,这些属性似乎对我没有用处。我想知道调用fetch()方法时实际发生了什么。我找不到任何与此相关的文件 Collection.find() 它在集合中查找与选择器匹配的文档并返回光标。在Meteor中,find()是同步的,如果数据库中有什么变化,它也会反映在UI上 有关

要在客户端mongodb实现上查询对象,我可以使用

MyModel.find();
// produces a lot of attributes, not useful

如果我不使用fetch,我会得到很多我不理解的属性,这些属性似乎对我没有用处。我想知道调用
fetch()
方法时实际发生了什么。我找不到任何与此相关的文件

Collection.find()

它在集合中查找与选择器匹配的文档并返回光标。在Meteor中,
find()
是同步的,如果数据库中有什么变化,它也会反映在UI上

有关
Collection.find()的详细信息

cursor.fetch()

fetch()。您可以使用
find()
返回的游标上的fetch。使用fetch()时,您将获得数组中的所有记录,但不会获得更新,即运行时数据库更改在执行后不会反映在返回的数据上

有关
cursor.fetch()的详细信息

使用什么?

如果您需要所有文档并希望对其执行某些操作,则只有
fetch()
有用,否则最好使用游标

结论

使用Collection.find()是最好的、可靠的和轻量级的。但最后它是根据您的应用程序逻辑

Collection.find()

它在集合中查找与选择器匹配的文档并返回光标。在Meteor中,
find()
是同步的,如果数据库中有什么变化,它也会反映在UI上

有关
Collection.find()的详细信息

cursor.fetch()

fetch()。您可以使用
find()
返回的游标上的fetch。使用fetch()时,您将获得数组中的所有记录,但不会获得更新,即运行时数据库更改在执行后不会反映在返回的数据上

有关
cursor.fetch()的详细信息

使用什么?

如果您需要所有文档并希望对其执行某些操作,则只有
fetch()
有用,否则最好使用游标

结论


使用Collection.find()是最好的、可靠的和轻量级的。但最后它是根据您的应用程序逻辑。

请记住,
find
fetch
之间还有一个基本区别:
fetch
会导致对整个游标数据进行深度复制操作。这会消耗CPU和内存


因此:如果不需要,请不要使用
fetch
!只有在将数据传递给第三方库(如
d3
)时才需要它,因为第三方库不理解什么是游标,并且需要本机JS数组。

请记住
find
fetch
之间还有一个根本区别:
fetch
会导致整个游标数据的深度复制操作。这会消耗CPU和内存


因此:如果不需要,请不要使用
fetch
!您只在将数据传递给第三方库(如
d3
)时才需要它,因为第三方库不理解什么是游标,需要本地JS数组。

perfect,这正是我想要的答案perfect,这正是我想要的答案Yes,也用于调试它useful@BM,我喜欢你的回答,我有一个疑问,游标是使用浅拷贝还是深拷贝?它所做的拷贝中,您得到的所有内容实际上都是拷贝,而不是引用。所以从技术上讲,它是一个深度复制。是的,而且用于调试它useful@BM,我喜欢你的答案,我有一个疑问,游标是使用浅拷贝还是深拷贝?它所做的拷贝中,你得到的一切都是拷贝,而不是引用。所以从技术上讲,这是一个深度复制。
MyModel.find().fetch();
// returns array containing my objects from type 'MyModel', e.g.
// [ { _id: "1", title: "some title", url: "some Url"__proto__: Object }, .. ]