包含$ each和$ position的等效Spring数据mongo模板查询

时间:2014-12-18 14:24:30

标签: mongodb mongodb-query spring-data-mongodb

我有这个查询,并希望使用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));

但它没有提到的位置属性

1 个答案:

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