大家好我想尝试使用mongodb java驱动程序匹配文档,例如:{fName : abc,lName : 456,dob : 00,address : xyz}同nameIdentity : [{fName : abc,lName : def,dob : 00,address : xyz...
大家好我想尝试使用mongodb java驱动程序匹配文档,例如:
{
"fName" : "abc",
"lName" : "456",
"dob" : "00",
"address" : "xyz"
}
同
"nameIdentity" : [
{
"fName" : "abc",
"lName" : "def",
"dob" : "00",
"address" : "xyz"
},
{
"fName" : "123",
"lName" : "456",
"dob" : "00",
"address" : "789"
}
如果我找到了该文件,那么我不做任何其他事情添加文件.我的问题是如果我的源文档包含fname:abc和lname:456这是第一组nameIdentity中的fname和第二组标识中的lname匹配.我希望这是一个完整的匹配.我尝试过这样的事情
List<Document> nameIdentities = (List<Document>) matchedDocument.get("nameIdentity");
for (int i=0;i<nameIdentities.size();i++)
{
temp.add(nameIdentities.get(0));
quBasicDBObject=new BasicDBObject("$and",temp);
}
iterable = mongoDatabase.getCollection("entity").find(updatedDocumentTypeOne);
if (iterable.first() == null)
{
updateResult = mongoDatabase.getCollection("entity")
.updateOne(
new Document("_id", new ObjectId(objectId)),
new Document("$push", new Document("nameIdentity", nameList.get(0))));
}
我有什么错误吗?
解决方法:
UPDATE
您可能必须使用聚合框架.
也许是这样的:
List<Bson> filterList = new ArrayList<>();
filterList.add(new BsonDocument().append("nameIdentity.fName", new BsonString("abc") ));
filterList.add(new BsonDocument().append("nameIdentity.lName", new BsonString("456") ));
FindIterable<org.bson.Document> it = collection.find(Filters.and(filterList));
沃梦达教程
本文标题为:如何使用java驱动程序将文档与mongodb中的现有数组元素进行匹配
基础教程推荐
猜你喜欢
- Java 流处理之收集器详解 2023-05-18
- Java使用正则表达式进行匹配且对匹配结果逐个替换 2023-05-25
- Java实现自定义LinkedList类的示例代码 2023-04-12
- SpringBoot嵌入式Servlet容器与定制化组件超详细讲解 2023-06-06
- AQS同步组件CyclicBarrier循环屏障用例剖析 2023-04-06
- Spring纯注解开发模式让开发简化更简化 2023-03-31
- Java实现一致性Hash算法详情 2023-05-14
- 详解Mybatis中javaType和ofType的区别 2023-07-15
- SpringBoot+hutool实现图片验证码 2023-04-17
- SpringBoot整合Minio实现上传文件的完整步骤记录 2022-11-11