【发布时间】:2015-12-24 10:37:47
【问题描述】:
我在各种集合中拥有数百万份文档。
我的应用程序必须定期将一些增量数据更新到 MongoDB。我如何做到这一点?
对于增量数据中的每条记录,如果记录存在,则必须使用新值对其进行更新,否则必须插入。
{
_id: 'some ID',
lifnr: 12345,
bukrs: 3455,
amount: 500
},
{
_id: 'some ID',
lifnr: 12346,
bukrs: 3456,
amount: 5200
}
假设上面是我的数据,以 lifnr 和 bukrs 作为具有唯一约束的复合索引。 {lifnr & bukrs} 值与任何现有值相同的任何新记录都应替换旧记录。如果它是唯一的 {lifnr & bukrs} 的新记录,那么它必须插入/附加它。
指导我的方法。谢谢
【问题讨论】:
-
详细了解哪些数据和查询(也使用运算符)会有所帮助
-
我是否过度简化了这一点,或者类似:
db.col.update({lifnr:doc.lifnr,bukrs:doc.bukrs},doc,{upset:true})就足够了吗?这将使用新值更新或插入 -
@Sammaye 能解释一下吗?我是 Mongo 的新手!顺便说一句,它不是'upsert'吗?谢谢
-
基本上
doc是一个包含您更改的文档的var,您通过复合索引中的两个条件值查询更新(因为异常抛出在查询中不起作用),然后您替换旧文档在第二个参数中带有新文档,或者如果找不到,则使用不高兴:true 插入新文档