使用日期范围的mongoose更新嵌套文档失败

时间:2016-12-31 09:22:07

标签: node.js mongodb mongoose

我想使用日期范围更新一组对象数组。我做了以下查询

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
    }]
});

1 个答案:

答案 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

Multiple update of embedded documents' properties