我有这个查询,并希望使用Spring mongo模板来触发此查询。但不知道我应该如何使用Spring Data处理$ each和$ mongo的位置。
db.data.update(
//Query
{"where":"condition"},
//Update
{
//Set some values
$set:{"aaa":402.7,"bbbb":6523297.00},
//Push some value into an inside array at the first place
$push: {
YYYYYY: { $each: [{
"time" : 1234,
"data" : [
396,
403.35,
386.5,
401.15,
8370865,
3320159538.15
]
} ],
//
$position: 0 }
}
},
{
//Update or insert
upsert: true
}
)
目前我喜欢这样,在最后的位置更新它
Update update = new Update();
update.set("aaa", 402.7);
update.set("bbbb", 6523297.00);
update.push("YYYYYY", data.getYYYYYY().get(0));
Query query = new Query(Criteria.where("where").is(condition));
mongoOperations.findAndModify(query, update, FindAndModifyOptions.options().upsert(true),DailyData.class);
我知道有一种方法可以使用推送构建器推送。
PushOperatorBuilder pushBuilder = update.push(“YYYYYY”); pushBuilder.each(data.getYYYYYY()得到(0));
但它没有提到的位置属性
答案 0 :(得分:0)
这是从源头的1.7个弹簧数据开始提供的。
强制在给定{@literal position}处添加值。 * * @param位置需要大于或等于零。 * @return * @since 1.7 * / public PushOperatorBuilder atPosition(int position){
if (position < 0) {
throw new IllegalArgumentException("Position must be greater than or equal to zero.");
}
this.modifiers.addModifier(new PositionModifier(position));
return this;
}