e339 java_java-在Spring Mongo中从文档数组中删除项目

我在mongo db中有这样的文档集合:

"_id" : ObjectId("592bc37c339e7a23788b4c7c"),

"trips" : [

{

"tripGcsId" : "5937f86e339e7a2a58ac3186",

"tripCounter" : NumberLong(1283),

"tripRef" : "hjkhjk"

},

{

"tripGcsId" : "5937f914339e7a2a58ac318b",

"tripCounter" : NumberLong(1284),

"tripRef" : "fjh"

}

]

和服务器端的方法(Spring Mongo):

public List removeTripObject( List tripIds )

{

Query query = Query.query( Criteria.where( "trips" ).elemMatch( Criteria.where( "tripGcsId" ).in( tripIds ) ) );

Update update = new Update().pullAll( "trips.tripGcsId", new Object[] { tripIds } );

getMongoTemplate().updateMulti( query, update, "ORDER" );

return updatedOrders;

}

参数tripIds是要从trips数组中删除的tripGcsIds的列表.上面的方法给我错误:写入失败,错误代码为16837,错误消息“无法使用零件(trips.trips.tripGcsId)遍历元素.

当我尝试使用$运算符时,如其他SO所述,答案如下:

public List removeTripObject( List tripIds )

{

Query query = Query.query( Criteria.where( "trips" ).elemMatch( Criteria.where( "tripGcsId" ).in( tripIds ) ) );

Update update = new Update().pullAll( "trips.$.tripGcsId", new Object[] { tripIds } );

getMongoTemplate().updateMulti( query, update, "ORDER" );

return updatedOrders;

}

我收到此错误:写入失败,错误代码为16837,错误消息为“只能将$pullAll应用于数组.

我不确定该pullAll命令在服务器端应如何显示.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值