在mongo中查找引用文档字段

时间:2016-10-18 09:32:11

标签: mongodb perl mongodb-query

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

{
  'travellers': [ 'a', 'b', 'c', 'd' ],
  ...
  'authorized-travellers': {
    'a' => {
        creator => 'admin',
        authorized => true,
        when => '2016-18-10 22:45:45',
    },
    'd' => {
        creator => 'admin',  
        authorized => false,
        when => '2016-17-10 12:44:00',
    },
  }
}

我需要一个查询来查找所有有待定旅行者授权的文件。

如果travellers.count小于“授权旅行者”密钥,则旅行(文件)有待定旅客授权。

在此示例中,此旅行有2个待处理的授权:b和c。

如果这可能(在perl中)或我需要手动执行查询? 怎么样?

由于

1 个答案:

答案 0 :(得分:1)

没有简单的方法来做服务器端。您可以构建$where函数。

如果可能的话,我会修改模式以将待处理计数(或布尔标志)保持为文档本身的不变量。更新travellersauthorized-travellers时,同时将pending计数/标志更新为原子操作。然后查询待处理的授权将是微不足道的。

要更新现有文档以添加不变量,如果频繁更新数据竞赛,则需要小心。

如果无法进行架构更改,那么如果效率低下,则循环遍历客户端文档并单独检查是很简单的。如果每个文档有大量文档和大量数据,请确保只回滚所需的字段。

希望这些想法有所帮助。