scene_action
中devid
集合和_id
集合匹配的数据<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.1</version>
</dependency>
在Java代码中连接MongoDB数据库,可以使用以下代码示例:
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoDatabase;
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
MongoDatabase database = mongoClient.getDatabase("mydatabase");
接下来,我们将介绍如何删除数组scene_action
中devid
集合和_id
集合匹配的数据。假设我们有一个集合名为mycollection
,其中包含如下文档:
{
"_id" : ObjectId("5fbb13406670766271d88a38"),
"name" : "Document 1",
"scene_action" : [
{
"devid" : "device1",
"action" : "action1"
},
{
"devid" : "device2",
"action" : "action2"
}
]
}
{
"_id" : ObjectId("5fbb136d6670766271d88a39"),
"name" : "Document 2",
"scene_action" : [
{
"devid" : "device2",
"action" : "action3"
},
{
"devid" : "device3",
"action" : "action4"
}
]
}
假设我们希望删除scene_action
数组中devid
为device2
的文档,代码示例如下:
import org.bson.Document;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
MongoCollection<Document> collection = database.getCollection("mycollection");
collection.updateMany(
Filters.eq("scene_action.devid", "device2"),
Updates.pull("scene_action", Filters.eq("devid", "device2"))
);
在上述代码中,我们使用了updateMany
方法,传入了两个参数。第一个参数是筛选条件,我们使用Filters.eq("scene_action.devid", "device2")
来匹配数组scene_action
中devid
为device2
的文档。第二个参数是更新操作,我们使用Updates.pull("scene_action", Filters.eq("devid", "device2"))
来删除数组scene_action
中devid
为device2
的元素。
当执行以上代码后,符合条件的文档将被删除。
假设原始的mycollection
集合中包含两个文档:
{
"_id" : ObjectId("5fbb13406670766271d88a38"),
"name" : "Document 1",
"scene_action" : [
{
"devid" : "device1",
"action" : "action1"
},
{
"devid" : "device2",
"action" : "action2"
}
]
}
{
"_id" : ObjectId("5fbb136d6670766271d88a39"),
"name" : "Document 2",
"scene_action" : [
{
"devid" : "device2",
"action" : "action3"
},
{
"devid" : "device3",
"action" : "action4"
}
]
}
执行删除操作后,mycollection
集合将变为:
{
"_id" : ObjectId("5fbb13406670766271d88a38"),
"name" : "Document 1",
"scene_action" : [
{
"devid" : "device1",
"action" : "action1"
}
]
}
{
"_id" : ObjectId("5fbb136d6670766271d88a39"),
"name" : "Document 2",
"scene_action" : [
{
"devid" : "device3",
"action" : "action4"
}
]
}
可以看到,原先包含devid
为device2
的文档中对应的信息已经被成功删除。
本文介绍了如何在Java代码中使用MongoDB数据库,删除数组scene_action
中devid
集合和_id
集合匹配的数据。通过简单的代码示例,展示了如何使用MongoDB的Java Driver来完成该操作。在实际项目中,可以根据具体需求修改代码中的筛选条件和更新操作,以实现更灵活的数据库操作。