我从sql DB获取信息并使用morphia将它们移动到mongo。我们检测到SQL方面的增量变化,并将更改后的值导入Monog,但是我的第一次尝试不起作用,因为我最终在数据库中使用了旧条目和新条目,而不是使用新条目折腾旧条目一。干净的方式强制morphia覆盖现有的条目
我的下一个尝试是取'sqlID'字段并用@id标记它。这做了我想要的,但它也阻止了sqlid被添加为一个普通的字段。当我想查询mongo的sqlID查询不再起作用。
我发现的其他建议是对mongo进行查询以获取当前可以保存的@id,并编写自定义查询以覆盖现有表中的每个字段(如果存在)。我不喜欢以前的选项,因为它需要一个额外的mongo查询,我从sql中获取每一行,而我正在使用的数据卷太昂贵了。后者会起作用,但考虑到单个记录中有多少个字段,我真的不想手动写出查询来手动覆盖每个字段。
我目前的懒惰攻击是保存sqlid两次,一次是@id,一次是正常字段。它做我想要的,但仍然感觉hack-y(如果我说的话,这是一个词!)。
当你保存到mongo时,是不是有一些更简单的方法来指定一个字段,并说“覆盖,如果这个字段已经存在”?
我可以使用sqlID作为mongo Id。我的问题是,如果它被标记为mongo Id,它会以不同的方式保存id。如果我为它添加一个mongo Id,就不会再创建一个sqlID字段,也不会有任何方法根据生成的mongo数据库中的sqlID进行读取操作。 – dsollen 2014-10-06 16:25:43