【发布时间】:2017-04-06 16:00:36
【问题描述】:
假设我们有 mongo 集合,其中包含以下形状的文档:
{
_id: '1234',
letters: ['a', 'b', 'c', 'd'],
}
但有时letters 字段可能是null。
我想知道是否可以在 SINGLE 查询中实现以下目标
- 如果
letters数组不为空,则将第一项设置为“x”。 - 否则,将
letters字段设置为['x']。
当然,最简单的想法是行不通的
db.collection.update({_id: '...'}, {$set:{'letters.0':'x'}});
因为如果尚未设置letters 字段,上述操作的结果将是:
{
// ...
letters: {
'0': 'x'
}
}
有没有办法告诉 mongo 我的意图是创建一个数组,而不是一个对象?
【问题讨论】: