MongoDBとSpringデータ-名/姓でユーザーを検索

ムーディー

私は次のコレクションを持っています:

User {
   firstname,
   lastname
}

名または姓(名/姓/名+姓)でユーザーを検索したい。

私が持っているもの:

 Criteria criteria = new Criteria();
 criteria.orOperator(Criteria.where("firstname").regex(searchQuery),Criteria.where("lastname").regex(searchQuery));

上記の問題は、名または姓のいずれかで検索できますが、両方では検索できないことです(たとえば、「ジョン」または「スミス」は可能ですが、「ジョンスミス」は不可能です。これは、次の理由で発生しています。 orOperatorと私はandOrまたは類似のものを見ることができません。

たとえば、データベース内に「John Smith」がある場合、「John」、「Smith」、「JohnSmith」のいずれかをクエリすることで彼を見つけることができます(たとえば、Facebookの場合と同様)。

編集:

String queryx[] = searchQuery.split(" ");
for(String q : queryx) {
    criteria.orOperator(Criteria.where("firstname").regex(searchQuery),Criteria.where("lastname").regex(q));
}

結果を表示しますが、コンソール内で次のエラーが発生します。

  Due to limitations of the com.mongodb.BasicDBObject, you can't add a second '$or' expression specified as '$or : [ { "firstname" : { "$regex" : "john smith"}} , { "lastname" : { "$regex" : "smith"}}]'. Criteria already contains '$or : [ { "firstname" : { "$regex" : "john smith"}} , { "lastname" : { "$regex" : "john"}}]'.

Edit2:

String queryx[] = searchQuery.split(" ");
   ArrayList<Criteria> orOperators = new ArrayList<Criteria>();
for(String q : queryx) {
    Criteria criteria = new Criteria();
    criteria.orOperator(Criteria.where("firstname").regex(searchQuery),Criteria.where("lastname").regex(q));
    orOperators.add(criteria);
}

Criteria [] orArray = orOperators.toArray(new Criteria[orOperators.size()]);
Criteria c = Criteria.where("firstname").regex(searchQuery);
c.orOperator(orArray);

Query query = new Query(c).limit(limit);
return mongoOperations.find(query, User.class);

編集3:

String queryx[] = searchQuery.split(" ");
ArrayList<Criteria> cr = new ArrayList<Criteria>();
for (String q : queryx) {
    Criteria criteria = new Criteria();
    criteria.orOperator(Criteria.where("firstname").regex(q),
            Criteria.where("lastname").regex(q));
    cr.add(criteria);
}

Query query = new Query();
for (Criteria cri : cr) {
    query.addCriteria(cri); //this is the problem
}

return mongoOperations.find(query, User.class);

エラー:

 Due to limitations of the com.mongodb.BasicDBObject, you can't add a second 'null' criteria. Query already contains '{ "$or" : [ { "firstname" : { "$regex" : "john smith"}} , { "lastname" : { "$regex" : "john"}}]}'.
ピンチュリック

名と姓を検索するには、次のように簡単に行うことができます。

String queryx[] = searchQuery.split(" ");
ArrayList<Criteria> cr = new ArrayList<Criteria>();
for (String q : queryx) {
    Criteria fCriteria = Criteria.where("firstname").regex(q);
    cr.add(fCriteria);
    Criteria lCriteria = Criteria.where("lastname").regex(q);
    cr.add(lCriteria);
}
Criteria c = cr.remove(0);
Criteria [] orArray = orOperators.toArray(new Criteria[orOperators.size()]);
c.orOperator(orArray);
query.addCriteria(c); //this is the problem
return mongoOperations.find(query, User.class);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

姓でユーザーを検索PHP

分類Dev

ユーザー名でLaravelのユーザーを検索

分類Dev

phpmyadminで同じユーザー名のユーザー名を検索する

分類Dev

Firebaseでユーザー名、姓、IDを取得する

分類Dev

Mongoose.js:ユーザー名LIKE値でユーザーを検索

分類Dev

Rails 4:Friendly_idgemがユーザー名でユーザーを検索

分類Dev

名前でユーザーを検索するFirebaseクエリ

分類Dev

ユーザー名でIDをTweepy検索

分類Dev

名で Active Directory ユーザーを検索する方法

分類Dev

LDAP(Wildfly)でユーザーを検索

分類Dev

データベースでユーザーの名を持つユーザーを検索しようとしています

分類Dev

AttaskAPIユーザー名の検索で大文字と小文字を区別

分類Dev

Graphqlはユーザー名またはメールでユーザーを検索します

分類Dev

複数のプロバイダーからのユーザー名でユーザーを検索[symfony2]

分類Dev

ユーザー名でFirebaseDatabaseを検索してユーザーを探します

分類Dev

ユーザー名を検索して、Parse.comiOSでユーザーを取得します

分類Dev

一意の姓を持つすべてのユーザーを検索します

分類Dev

「n」で始まる配列でユーザー名を検索します

分類Dev

AngularJSのユーザー名のリストでユーザーを検索します

分類Dev

TFS 2017-VS2015でShelvesetを検索すると、ユーザー名のみが検索されます

分類Dev

Woocommerceで名と姓からユーザー名を生成しないようにする

分類Dev

Meteor.usersでのユーザー名全文検索

分類Dev

GithubAPI-1回の呼び出しでユーザー名とユーザーフォロワーで検索

分類Dev

StormpathでIDとcustomDataでユーザーを検索する方法

分類Dev

ユーザー名ではなくチャンネル名でyouTubeV3 APIを検索しますか?

分類Dev

RESTful WebサービスのIDとユーザー名で検索

分類Dev

メールアドレスとユーザー名を検索するUIsearchbar

分類Dev

PrincipalContextを使用してLDAP(Active Directory)ですべてのユーザー名とその情報を検索する

分類Dev

ユーザーLaravelを検索

Related 関連記事

  1. 1

    姓でユーザーを検索PHP

  2. 2

    ユーザー名でLaravelのユーザーを検索

  3. 3

    phpmyadminで同じユーザー名のユーザー名を検索する

  4. 4

    Firebaseでユーザー名、姓、IDを取得する

  5. 5

    Mongoose.js:ユーザー名LIKE値でユーザーを検索

  6. 6

    Rails 4:Friendly_idgemがユーザー名でユーザーを検索

  7. 7

    名前でユーザーを検索するFirebaseクエリ

  8. 8

    ユーザー名でIDをTweepy検索

  9. 9

    名で Active Directory ユーザーを検索する方法

  10. 10

    LDAP(Wildfly)でユーザーを検索

  11. 11

    データベースでユーザーの名を持つユーザーを検索しようとしています

  12. 12

    AttaskAPIユーザー名の検索で大文字と小文字を区別

  13. 13

    Graphqlはユーザー名またはメールでユーザーを検索します

  14. 14

    複数のプロバイダーからのユーザー名でユーザーを検索[symfony2]

  15. 15

    ユーザー名でFirebaseDatabaseを検索してユーザーを探します

  16. 16

    ユーザー名を検索して、Parse.comiOSでユーザーを取得します

  17. 17

    一意の姓を持つすべてのユーザーを検索します

  18. 18

    「n」で始まる配列でユーザー名を検索します

  19. 19

    AngularJSのユーザー名のリストでユーザーを検索します

  20. 20

    TFS 2017-VS2015でShelvesetを検索すると、ユーザー名のみが検索されます

  21. 21

    Woocommerceで名と姓からユーザー名を生成しないようにする

  22. 22

    Meteor.usersでのユーザー名全文検索

  23. 23

    GithubAPI-1回の呼び出しでユーザー名とユーザーフォロワーで検索

  24. 24

    StormpathでIDとcustomDataでユーザーを検索する方法

  25. 25

    ユーザー名ではなくチャンネル名でyouTubeV3 APIを検索しますか?

  26. 26

    RESTful WebサービスのIDとユーザー名で検索

  27. 27

    メールアドレスとユーザー名を検索するUIsearchbar

  28. 28

    PrincipalContextを使用してLDAP(Active Directory)ですべてのユーザー名とその情報を検索する

  29. 29

    ユーザーLaravelを検索

ホットタグ

アーカイブ