$push,$each,$sort,$slice,$position
1,各元素解释
$push 向数组中添加元素
$each 循环数据
$sort 对数组进行排序
$slice 对整个collection表进行数据裁减,用的时候一定要当心
$position 插入数据的位置。
2,实例
- db.test4.insert(
- {
- "_id" : 5,
- "quizzes" : [
- { wk: 1, "score" : 10 },
- { wk: 2, "score" : 8 },
- { wk: 3, "score" : 5 },
- { wk: 4, "score" : 6 }
- ]
- }
- );
- db.test4.update( { _id: 5 },
- { $push: { quizzes: { $each: [ { wk: 5, score: 8 },
- { wk: 6, score: 7 },
- { wk: 7, score: 6 } ],
- $sort: { score: -1 },
- $slice: 3,
- $position:2
- }
- }
- }
- );
java代码示范
List<Map<String, Object>>lit=new ArrayList<Map<String,Object>>();
lit.add(userMap); // 数据要用list包装下,不然会报错
DBObject each = new BasicDBObject();
each.put("$each", lit); // 插入的数据
each.put("$sort", new BasicDBObject("atime",-1));// 重新排序 -1倒序 1正序
// each.put("$position", 0);// 插入位置
DBObject push = new BasicDBObject();
push.put("user", each);// 内嵌的数组名字
DBObject setField = new BasicDBObject();
setField.put("$push", push);
// wheremap 是修改条件
mongo.update(setField, collection, wheremap);