我一直在尝试使用两阶段提交方法执行重要的更新操作。不幸的是,将在数组中更新的字段。但是同一个文档必须有一个pendingTransactions字段来存储当前的事务。根据{{3}},MongoDB不支持位置更新 如果查询文档中有两个数组字段。
有没有机会解决这种情况?
其他附加信息和'正确结果'在查询中使用两个数组字段
实际上我在查询文档中使用了第二个数组而不知道问题。它运作稳定。测试时,我遇到了另一个更新操作的问题。所以,第一个查询每次都能正确响应。
稳定部分如下所示。使用$ne
运算符可以正常运行;
invoices
和pendingTransactions
是数组字段
var query = {
_id: customer_id,
invoices: { $elemMatch: { 'year': 2015, 'month': 8 } },
pendingTransactions: { $ne: transaction_id }
}
Customers.findOne(filter, { 'invoices.$' }, function(err, customer){
/* Positional operator $ works correct */
}
不稳定部分如下所示;
var query = {
_id: customer_id,
invoices: { $elemMatch: { 'year': 2015, 'month': 8 } },
pendingTransactions: transaction_id
}
Customers.findOne(filter, { 'invoices.$' }, function(err, customer){
/* Positional operator $ doesn't work correct */
}