Java 从MongoDB对象的结果中删除重复值

Java 从MongoDB对象的结果中删除重复值,java,mongodb,Java,Mongodb,如何从MongoDB对象的结果中删除重复值 我在mongodb中有一些记录如下 {"Filename":"PHP Book.pdf","Author":"John" ,"Description":"This is my PHP Book"} {"Filename":"Java Book.html" ,"Author":"Paul" ,"Description":"This is my JAVA Book"} {"Filename":".NET Book.doc" ,"Author":"Jame

如何从MongoDB对象的结果中删除重复值

我在mongodb中有一些记录如下

{"Filename":"PHP Book.pdf","Author":"John" ,"Description":"This is my PHP Book"} 
{"Filename":"Java Book.html" ,"Author":"Paul" ,"Description":"This is my JAVA Book"}
{"Filename":".NET Book.doc" ,"Author":"James" ,"Description":"This is my .NET Book"}
下面是我搜索包含“Java”单词的文件名和描述字段并显示其文件名的代码

Mongo m = new Mongo("10.0.0.26", 27017) ;
DB db = m.getDB("soft") ;
DBCollection col = db.getCollection("poc") ;

BasicDBObject query = new BasicDBObject();
BasicDBObject query1 = new BasicDBObject();

String KeyWord="JAVA";
query.put("Filename",  java.util.regex.Pattern.compile(KeyWord));
query1.put("Content",  java.util.regex.Pattern.compile(KeyWord));
DBCursor cursor = col.find(query) ;
DBCursor cursor1 = col.find(query1) ;
    while (cursor.hasNext()) {
        DBObject o = cursor.next();
        System.out.println("File name contains JAVA:"+o.get("Filename"));
        }
    while (cursor1.hasNext()) {
        DBObject ob = cursor1.next();
        System.out.println("File name whose content contains JAVA:"+ob.get("Filename"));
            }
我得到以下输出:

File Name Contains JAVA:Java Book.html
File Name  whose content Contains JAVA:Java Book.html
我从文件名和内容查询中得到相同的文件名。我想删除重复的值。请建议我


谢谢

我建议使用$or查询,例如:

DBObject query = QueryBuilder.start().or(
    new BasicDBObject("Filename",  java.util.regex.Pattern.compile(KeyWord)),
    new BasicDBObject("Content", java.util.regex.Pattern.compile(KeyWord))).get();
并将其作为单个查询而不是两个单独的查询来执行


请注意,MongoDB将无法对非锚定正则表达式使用索引。有关详细信息,请参阅。

您是否尝试过类似的方法:
new BasicDBObject(“文件名”,new BasicDBObject($ne“,…).append(“内容”,java.util.regex.Pattern.compile(关键字))
在上面的命令中$ne之后我应该给出什么我想你应该给它与你给
文件名
查询的正则表达式相同的正则表达式。这样
内容
查询将从
文件名
查询中排除结果。这里什么构成重复值?在你的例子中,你没有考虑
\u id
查询返回的文档。另外,“删除重复值”是什么意思?如果单个文档的
文件名
内容
字段中都有“JAVA”,是否要删除该文档?