我正在使用mongo 2.2.3和java驱动程序.我的困境,我必须把一个字段和值推入一个数组,但我似乎无法弄清楚如何做到这一点.我的数据样本:
"_id" : 1,
"scores" : [
{
"type" : "homework",
"score" : 78.97979
},
{
"type" : "homework",
"score" : 6.99
},
{
"type" : "quiz",
"score" : 99
}
]
Run Code Online (Sandbox Code Playgroud)
我可以$推入shell:
db.collection.update({_id:1},{$push:{scores:{type:"quiz", score:99}}})
Run Code Online (Sandbox Code Playgroud)
但是当我把它翻译成java时,我迷惑自己并将键盘放在墙上.
到目前为止我的java代码(不完整和错误):
DBObject find = new BasicDBObject("_id", 1);
DBObject push = new BasicDBObject("$push", new BasicDBObject(
"scores", new BasicDBObject()));
Run Code Online (Sandbox Code Playgroud) 我有以下jpa存储库:
@Query("UPDATE PlayerAccount pa SET pa.password = ?3 WHERE pa.id = ?1 AND pa.password = ?2")
@Modifying
public int updatePasswordWithValidation(Long playerAccountId, String oldPasswordDB, String encodePassword);
Run Code Online (Sandbox Code Playgroud)
现在,我想为mongoDB存储库实现类似的更新查询:
@Query("update( { _id: ObjectId(' $1 ') }, { $set: { messageStatus: $2} })")
Run Code Online (Sandbox Code Playgroud)
但它不起作用.任何有关自定义mongo存储库更新如何显示的参考?
谢谢