【发布时间】:2022-01-11 04:23:51
【问题描述】:
我有以下文件:
{
_id: 12,
item: 'envelope',
qty: ISODate("2021-12-05T00:00:00.000Z"),
arrayField: [ 128, 190, 1 ]
}
我尝试使用此命令对其进行更新
products> db.products.update({_id:12},{$max : { arrayField : [1,190,1879]} })
输出如下:
{
acknowledged: true,
insertedId: null,
matchedCount: 1,
modifiedCount: 0,
upsertedCount: 0
}
我不太明白现有的arrayField 和新的arrayField 之间的比较是如何进行的。它们都是数组,所以应该对每个元素进行某种比较,但它究竟是如何工作的呢?
从documentation 我读到这个:
对于数组,小于比较或升序比较数组的最小元素,大于比较或降序比较数组的最大元素。因此,在将值为单元素数组的字段(例如 1 )与非数组字段(例如 2)进行比较时,比较在 1 和 2 之间。空数组的比较(例如 [ ])将空数组视为小于 null 或缺少字段。
但我仍然不完全理解......有人可以提供我的例子吗? 提前致谢
【问题讨论】:
-
您的预期结果是什么?
-
这里的问题是我不明白比较是如何工作的。是否对数组的每个元素进行比较?在比较之前元素是否重新排列?我可以很容易地说 1879 大于 190,但是 mongodb 是如何考虑这些信息的呢?我希望它对我的问题有所帮助...