我有这样的系列。
System
{
System_id: 100,
system_type:
{
[
{
Tenant_Id: 1,
Tenant_Info: "check",
Prop_Info: ...
},
{
Tenant_Id: 2,
Tenant_Info: "sucess",
Prop_Info: ...
} ]
}
我需要使用java api删除tenant_id为1且system_id为100的唯一一个嵌入式文档。
我试图删除该文档。但是整个文件都被删除了。我只需要删除tenant_id为1的嵌入式文档。
DBCollection collection=db.getCollection("system");
field.put("system_id",100);
field.put("system_type.Tenant_id", 1);
collection.remove(field);
请指导我如何删除它?我需要像这样的输出。
System
{
System_id: 100,
system_type:
{
[
{
Tenant_Id: 2,
Tenant_Info: "sucess",
Prop_Info: ...
} ]
}
答案 0 :(得分:3)
由于您没有删除整个文档,因此需要使用$pull
运算符而非update
调用remove
:
BasicDBObject query = new BasicDBObject(
"System_Id", 100
);
BasicDBObject pull = new BasicDBObject(
"$pull", new BasicDBObject(
"system_type", new BasicDBObject(
"Tenant_Id", 1
)
)
);
collection.update(query, pull);
答案 1 :(得分:0)
尝试这样的事情:
{ $pull : { system_type : {Tenant_Id: 1} } }