[英]MongoTemplate pull query
我正在嘗試從 mongoDb 中的嵌入字段數組中刪除一個項目。 數組是一種類似於下面的字符串類型。
{
_id: 1,
fruits: [ "apples", "pears", "oranges", "grapes", "bananas" ],
vegetables: [ "carrots", "celery", "squash", "carrots" ]
}
{
_id: 2,
fruits: [ "plums", "kiwis", "oranges", "bananas", "apples" ],
vegetables: [ "broccoli", "zucchini", "carrots", "onions" ]
}
我只是想從嵌入式陣列蔬菜中取出胡蘿卜。 使用 mongo shell,下面的查詢有效
db.stores.update(
{ },
{ $pull: { vegetables: "carrots" },
{ multi: true }
)
現在我需要在 spring 中使用 mongoTemplate 執行此操作,我嘗試使用以下答案,但它不會刪除元素MongoTemplate pull subdocument 。 誰能建議我如何在 spring 項目中使用 mongoTemplate 實現這一目標
您可以簡單地使用以下查詢來提取vegetables
對象數組中的任何字符串:
mongoTemplate.updateMulti(new Query(), new Update().pull("vegetables", "squash"), "stores");
在上面的查詢中, squash將在執行后被拉取。 有關詳細信息,我還在上述查詢之前和之后添加了對stores
集合的查找查詢,如下所示:
List<Stores> storesList = mongoTemplate.find(new Query(), Stores.class);
for(Stores stores : storesList) {
System.out.println(stores.toString());
}
mongoTemplate.updateMulti(new Query(), new Update().pull("vegetables", "squash"), "stores");
List<Stores> afterModificationStoresList = mongoTemplate.find(new Query(), Stores.class);
for(Stores stores : afterModificationStoresList) {
System.out.println(stores.toString());
}
輸出如下:
2019-11-26 10:19:57.947 DEBUG 7321 --- [ main] o.s.data.mongodb.core.MongoTemplate : find using query: { } fields: Document{{}} for class: class sample.data.mongo.models.Stores in collection: stores
Stores{id='1.0', fruits=[apples, pears, oranges, grapes, bananas], vegetables=[celery, squash]}
Stores{id='2.0', fruits=[plums, kiwis, oranges, bananas, apples], vegetables=[broccoli, zucchini, onions]}
2019-11-26 10:19:57.975 DEBUG 7321 --- [ main] o.s.data.mongodb.core.MongoTemplate : Calling update using query: { } and update: { "$pull" : { "vegetables" : "squash" } } in collection: stores
2019-11-26 10:19:57.985 DEBUG 7321 --- [ main] o.s.data.mongodb.core.MongoTemplate : find using query: { } fields: Document{{}} for class: class sample.data.mongo.models.Stores in collection: stores
Stores{id='1.0', fruits=[apples, pears, oranges, grapes, bananas], vegetables=[celery]}
Stores{id='2.0', fruits=[plums, kiwis, oranges, bananas, apples], vegetables=[broccoli, zucchini, onions]}
有關代碼詳情,請訪問 Github repo: https : //github.com/krishnaitd/learningJava/blob/master/spring-boot-sample-data-mongodb/src/main/java/sample/data/mongo/main/應用程序.java#L126
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.