我有一个包含这种结构的文档的集合:
{
'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中)或我需要手动执行查询? 怎么样?
由于
答案 0 :(得分:1)
没有简单的方法来做服务器端。您可以构建$where函数。
如果可能的话,我会修改模式以将待处理计数(或布尔标志)保持为文档本身的不变量。更新travellers
和authorized-travellers
时,同时将pending
计数/标志更新为原子操作。然后查询待处理的授权将是微不足道的。
要更新现有文档以添加不变量,如果频繁更新数据竞赛,则需要小心。
如果无法进行架构更改,那么如果效率低下,则循环遍历客户端文档并单独检查是很简单的。如果每个文档有大量文档和大量数据,请确保只回滚所需的字段。
希望这些想法有所帮助。