AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 18858
Accepted
bmargulies
bmargulies
Asked: 2012-06-06 10:36:15 +0800 CST2012-06-06 10:36:15 +0800 CST 2012-06-06 10:36:15 +0800 CST

mongodb 在记录更新时告诉我什么?

  • 772

在将大量数据推送到 mongo 的大型程序运行几分钟后,我的日志开始显示(我猜)每次更新的消息。这似乎非常嘈杂,是否有一些特殊的原因它觉得有必要这样做?

Tue Jun  5 14:32:37 [conn3] update benchmark.entity  
 query: { corefEntityId: "45-LOCATION" } 
 update: { $set: { corefEntityId: "45-LOCATION", type: "Location" },
 $push: { indocs: { docid: "cfcc403b-714f-4c5d-8507-ccb5b6354654", 
   ordinal: 26, label: "United States", mentions: [ "United States" ] } }, 
   $addToSet: { allMentions: { $each: [ "United States" ] } }, 
   $inc: { documentCount: 1 } } 116ms

作为一个也许更容易回答的脚注,我想知道:是一个“upsert”,它添加到一些内部文档中比作为顶级文档简单地插入到内部文档的其他集合中更快或更慢?

mongodb upsert
  • 1 1 个回答
  • 1739 Views

1 个回答

  • Voted
  1. Best Answer
    Adam C
    2012-06-07T10:21:48+08:002012-06-07T10:21:48+08:00

    我认为您的意思是 upsert 而不是 upstart(upstart 是 Ubuntu 系统上的一种工作)。Upsert 的意思是“如果存在则更新文档;如果缺少则插入(单个文档)”。MongoDB 仅通过检查您传递给它的标准文档来确定该文档丢失。

    确定文档是否存在的查询可能是这里的慢部分。您应该只对 find 进行解释,以确定它是否正确使用索引并且是否尽可能高效:

    http://www.mongodb.org/display/DOCS/Explain

    如果它不使用索引,那么您应该添加一个以加快速度。根据此示例是否是您的查询计划的典型示例,我希望“corefEntityId”上的索引至少是一个好主意。如果在其他情况下查找更复杂,您可能需要查看复合索引并使用提示查看哪个是最佳的:

    http://www.mongodb.org/display/DOCS/Optimization#Optimization-Hint

    就日志记录而言 - 当它记录您在示例中看到的查询时,原因是因为默认的“slowms”值为 100。也就是说,MongoDB 将记录完成时间超过 100 毫秒的每个查询。这可以调整:

    http://www.mongodb.org/display/DOCS/Database+Profiler#DatabaseProfiler-EnablingProfiling

    例如,如果您想将其设置为 200 毫秒:

    db.setProfilingLevel(1,200)
    
    • 4

相关问题

  • Mongo Map-Reduce 还是分片?

  • 使用集群设置 Mongo

  • MongoDB 的 find 和 findone 调用之间的区别

  • 分片对小集合有效吗?

  • 关于操作/管理 MongoDB 的良好资源

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何查看 Oracle 中的数据库列表?

    • 8 个回答
  • Marko Smith

    mysql innodb_buffer_pool_size 应该有多大?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    从 .frm 和 .ibd 文件恢复表?

    • 10 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve