如何自动更新MongoDB中的集合中的两个文档

我有一个具有这种结构的文档集合:

{ "name": "abc", "version": 1, "official": true, "someOtherField": {} }

在这个集合中,不能有两个具有相同名称和版本组合的文档(索引需要处理)。 另外,对于一个给定的名称,最多只能有一个文档的官方信息是真实的。

假设我的馆藏包含以下文件:

{"name": "abc", "version": 1, "official": false, ...}
{"name": "abc", "version": 2, "official": true, ..."}
{"name": "abc", "version": 3, "official": false, ..."}
  • 我想让“abc”的第3版为官方版本。 我如何自动更新集合,使版本2的官方设置为false,并将官方的版本3设置为true?
  • 在插入新版本时如何进行上述操作? 例如,是否可以插入一个新的版本为4的文档,同时将当前的正式版本设置为false?
  • 或者,还有更好的方法来模拟所有这些吗? 我们经常会查询所有{“official”:true}文档,所以我认为保留这些信息是有意义的。 但是,也许更好的方法是保留一个单独的集合,指出给定名称的正式版本,例如

    {"name": "abc", "official_version": 3}
    

    在这种情况下,只需更新相应的official_version字段即可更改正式版本,但不能保证该版本仍存在于主集合中。 此外,查询所有官方文件需要一个或多个操作,一个获得所有名称和正式版本的列表,另一个从主要收集中获取实际文件,这似乎不合适。

    谢谢!

    编辑:正如指出的,没有办法自动更新多个文档(请参阅MongoDb文档)。 既然如此,似乎原子上改变官方版本的唯一方法就是在我的文章末尾列出的单独文档中跟踪这些信息。 如果有人能想到任何问题,仍然有兴趣听取更好的替代方案。 谢谢

    链接地址: http://www.djcxy.com/p/61951.html

    上一篇: How to atomically update two documents in a collection in MongoDB

    下一篇: How to query and update document by using single query?