我想使用日期范围更新一组对象数组。我做了以下查询
Person.update({'data.date': {'$gte': '1-1-2016', '$lte': '1-5-2016'}},
{'$set': {'data.$.score':1000}},
{multi:true})
原来score
的日期1-1-2016
只是更新了,$ lte有问题吗?
这是我的架构
var Person = new Schema({
name: String,
data: [{
date: Date,
score: Number
}]
});
答案 0 :(得分:0)
我刚刚意识到这是因为位置运算符include : <tag>text text /string to find/ text text </tag>
exclude : <meta content="/string to find/"></meta>
。根据MongoDB文档:
请记住,位置$运算符充当更新查询文档的第一个匹配项的占位符。
https://docs.mongodb.com/manual/reference/operator/update/positional/
在您的情况下,只更新第一个嵌入文档,因为这是位置运算符的行为。
您可以将这些答案用作参考:
Multiple use of the positional `$` operator to update nested arrays