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
通过多个文档使用,而不是通过同一文档中的嵌入文档使用(它没有任何效果)。对于这些情况似乎没有直接的解决方案,请查看我发布的答案。我想我必须查看并执行上述查询。