我必须根据条件更新文档,或者在不存在该文档时添加一个文档,即upsert取决于存在查询。我可以在mongoDb shell中实现该目标,但不知道如何在Java中使用mongoTemplate实现相同的目标。
我的查询是
db.Bookmark.update( { $and:[
{ 'clientId':168613 },
{ 'resourceId':76864136 },
{'books':{ $not: {$size :3} } }
] },
{ $addToSet:{ 'books': DBRef( "book","168613_1671" ) } },
{ $not: { $exists:{ 'clientId': 168613, 'resourceId': 76864136 } }
} );
因此,如果在“书签”集合中书籍的大小小于3,则请更新该集合,否则请检查upsert,这取决于是否存在clientId和resourceId组合的任何条目。