【问题标题】:Efficiency of MongoDB's db.collection.distinct() for every user vs saving as a db entry and retrieving resultsMongoDB 的 db.collection.distinct() 对每个用户的效率与保存为数据库条目和检索结果的效率
【发布时间】:2013-11-05 07:28:51
【问题描述】:

在我的nodeJS 应用程序中,我查询mongoDB 以获取特定数据库字段的不同值。这将返回一个包含大约 3000 个值的数组。

每个用户都必须为每个会话获取这些数据(因为它是运行应用程序不可或缺的一部分)。

我想知道为每个用户执行此操作是否更有效(更快):

 db.collection.distinct({"value"}, function(data){
    // save the data in a variable
 }) 

或者我是否应该在服务器端加载不同的值(例如,每天一次),然后将其保存为数据库条目供每个用户检索,如下所示:

// Server-side:

 db.collection.distinct({"value"}, function(data){
    // save the data to MongoDB as a document
 }) 

// Client-side:

 db.serverInfo.find({name: "uniqueEntries"}, function(data){
    // Save to browser as a variable
 }) 

我自己对此进行了测试,并没有发现太大的不同,但我是目前唯一使用该应用程序的人。一旦我获得 10/100/1000/10,000 个用户,我想知道哪个最适合在这里使用。

【问题讨论】:

    标签: node.js mongodb performance database-design database


    【解决方案1】:

    如果你在这个字段上有一个索引,MongoDB 应该能够只使用索引来返回 distinct() 操作的结果,这应该足够快。

    但是,与所有性能问题一样,分析是确定的最佳方法,或者在 MongoDB 的情况下,使用explain 选项来查看幕后发生的事情。

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 2013-04-03
      • 1970-01-01
      • 2012-04-18
      • 2012-04-27
      相关资源
      最近更新 更多