Mongodb 在minimongo上执行fetch()时会发生什么
要在客户端mongodb实现上查询对象,我可以使用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上 有关
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 }, .. ]