2017-06-22 12 views
-1

私はMongoDBのマッチなどクエリ

{ 
     "id": "5948b044ef91edb15d222794", 
     "articleId": "4", 
     "author": "asdfghjkl", 
     "publicationDate": 1454371200000, 
     "rating": 4, 
     "numViews": 600000, 
     "summary": "In the end, bombastic bozo Donald Trump’s predictions of an Iowa victory were all a big, sad joke.", 
     "articleUrl": "http://www.asdfghjkl.com/news/politics/donald-trump-predicts-iowa-victory-voters-caucusing-article-1.2516776", 
     "keywords": [ 
      "Trump", 
      "Election" 
     ], 
     "imgPath": [ 
      "http://assets.asdfghjkl.com/polopoly_fs/1.2516971.1454384425!/img/httpImage/image.jpg_gen/derivatives/article_1200/usa-election-trump.jpg" 
     ], 
     "articleName": "Ted Cruz, after trailing in polls, beats Donald Trump in Iowa caucus; Marco Rubio finishes a close third" 
    } 

ようにMongoDBに文書のリストを持って、私は私がしたいキーワード(のような文字列[「トランプ」、「ドナルド」、「選挙」])のリストを持っていますこれらのドキュメントのkeywordsarticleNameの列と一致します。

so、java spring-bootの$in or $or or regexを使用してコレクションから一致するドキュメントを取得するにはどうすればよいですか?

+0

春データを使用することにより!人々があなたを助けてくれるようにしたい場合は、少しでも努力してください。 –

+0

'@ Repository'を質問に入れ、この情報を実装するインターフェースをあなたに教えてくれます – MaQuiNa1995

答えて

1
@Autowired 
private MongoTemplate mongoTemplate; 

Query query = new Query(); 
List<String> list = Arrays.asList("Trump", "Election"); 
query.addCriteria(Criteria.where("keywords").in(list)); 
List<YourModel> yourModel = mongoTemplate.find(query, YourModel.class); 
0

私は$の正規表現を使用した実装に従うことによって、これをしなかったしている:

キーワード等である
BasicQuery query = new BasicQuery("{ keywords: { $regex: '(?:[\\s]|^)("+keywords+")(?=[\\s]|$)',$options: 'i' } } "); 
    articlesList = mongoTemplate.find(query, Articles.class); 

:KEYWORD1 | KEYWORD2 | KEYWORD3