0

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

ファイル名クエリとコンテンツ クエリの両方から同じファイル名を取得しています。重複した値を削除したいのですが、提案してください。

ありがとう

4

1 に答える 1

0

次のような $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();

2 つの個別のクエリではなく、1 つのクエリとして実行します。

MongoDB は、固定されていない正規表現のインデックスを使用できないことに注意してください。詳細については、 http://docs.mongodb.org/manual/reference/operator/regex/を参照してください。

于 2013-07-15T18:15:20.287 に答える