如何使用 MongoDB 和 Spring 的存储库更新列表?
How do I update a list using MongoDB and Spring's repository?
我有如下文档:
{
myDocument:
{
_id: (Auto-generated)
someField: "Hello world",
targetField: ["Steve", "Bill"]
}
}
此外,我有一个这样的存储库:
@Repository
public interface FooRepository extends MongoRepository<MyDocument, String> {
}
我的问题是:“如何在 targetField 中添加新数据而不在本地找到它?因为如果我的列表太大,我不想加载它,但只在其中插入新的东西。"
谢谢。
$addToSet
db.collection.update({
_id: "1"
},
{
"$addToSet": {
targetField: {
$each: [
"Steve",
"Sam"
]
}
}
},
{
new: true
})
使用 MongoTemplate
、Query
和 Update
spring data mongodb
Update.addToSet
将项目添加到集合中(不可复制)
Update.push
将项目附加到数组(可复制)
import org.springframework.data.mongodb.core.*;
@Autowired
MongoTemplate mongoTemplate;
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(idToUpdate));
Update update = new Update();
update.addToSet("targetField", "newValue");
mongoTemplate.updateFirst(query, update, "collectionName");
- 获取结果文档,使用
FindAndModifyOptions
FindAndModifyOptions options = FindAndModifyOptions.options()
.returnNew(true);
TargetClass result = mongoTemplate.findAndModify(query, update, options, TargetClass.class, "collectionName");
- 添加多个值
update.addToSet("targetField")
.each("value1", "value2");
update.push("targetField")
.each("value1", "value2");
- 删除位于
position
的项目
update.pop("targetField", position);
- 通过
value
删除项目
update.pull("targetField", "value");
- 移除多项
update.pullAll("targetField", new Object[]{"value1", "value2"});
我有如下文档:
{
myDocument:
{
_id: (Auto-generated)
someField: "Hello world",
targetField: ["Steve", "Bill"]
}
}
此外,我有一个这样的存储库:
@Repository
public interface FooRepository extends MongoRepository<MyDocument, String> {
}
我的问题是:“如何在 targetField 中添加新数据而不在本地找到它?因为如果我的列表太大,我不想加载它,但只在其中插入新的东西。"
谢谢。
$addToSet
db.collection.update({
_id: "1"
},
{
"$addToSet": {
targetField: {
$each: [
"Steve",
"Sam"
]
}
}
},
{
new: true
})
使用 MongoTemplate
、Query
和 Update
spring data mongodb
Update.addToSet
将项目添加到集合中(不可复制)Update.push
将项目附加到数组(可复制)
import org.springframework.data.mongodb.core.*;
@Autowired
MongoTemplate mongoTemplate;
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(idToUpdate));
Update update = new Update();
update.addToSet("targetField", "newValue");
mongoTemplate.updateFirst(query, update, "collectionName");
- 获取结果文档,使用
FindAndModifyOptions
FindAndModifyOptions options = FindAndModifyOptions.options()
.returnNew(true);
TargetClass result = mongoTemplate.findAndModify(query, update, options, TargetClass.class, "collectionName");
- 添加多个值
update.addToSet("targetField")
.each("value1", "value2");
update.push("targetField")
.each("value1", "value2");
- 删除位于
position
的项目
update.pop("targetField", position);
- 通过
value
删除项目
update.pull("targetField", "value");
- 移除多项
update.pullAll("targetField", new Object[]{"value1", "value2"});