Node.js mongoose使用日期范围更新嵌套文档失败

Node.js mongoose使用日期范围更新嵌套文档失败,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我想使用日期范围更新一组对象数组。我做了下面的询问 Person.update({'data.date': {'$gte': '1-1-2016', '$lte': '1-5-2016'}}, {'$set': {'data.$.score':1000}}, {multi:true}) 结果表明,2016年1月1日的分数只更新了,lte有什么问题吗 这是我的模式 var Person = new Schema({ name: String, data: [{

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

Person.update({'data.date': {'$gte': '1-1-2016', '$lte': '1-5-2016'}}, 
    {'$set': {'data.$.score':1000}}, 
    {multi:true})
结果表明,2016年1月1日的
分数
只更新了,lte有什么问题吗

这是我的模式

var Person = new Schema({
    name: String,
    data: [{
        date: Date,
        score: Number
    }]
});

我刚刚意识到这是因为位置运算符
$
。根据MongoDB文档:

请记住,位置$operator充当更新查询文档的第一个匹配项的占位符

在您的情况下,只更新第一个嵌入的文档,因为这是位置操作符的行为

您可以使用以下答案作为参考:


$lte
看起来没有错。你也可以添加你的数据吗?@AntonioVal
[{“姓名”:“某物”,“数据”:[{“日期”:新日期(“1-1-2016”),“分数”:3,},{“日期”:新日期(“1-2-2016”),“分数”:3,}]
看看第二个年份:Pwhat?这个问题的答案是什么?问题是什么?请具体说明。我刚才扩展了解释,因为位置运算符的行为,只有您的第一个嵌入文档正在更新。因此,任何解决方案?意味着我不能使用gte和lte更新多个文档??嗯我希望multi:true用于此目的。
multi:true
通过多个文档使用,而不是通过同一文档中的嵌入文档使用(它没有任何效果)。对于这些情况似乎没有直接的解决方案,请查看我发布的答案。我想我必须查看并执行上述查询。