복붙노트

[MONGODB] 방법 "과 같은"로 MongoDB의 쿼리를 하는가?

MONGODB

방법 "과 같은"로 MongoDB의 쿼리를 하는가?

나는 쿼리와 같은 SQL과 쿼리 뭔가 원하는 :

SELECT * FROM users  WHERE name LIKE '%m%'

어떻게 MongoDB를 동일한 달성 할까? 나는 설명서 등에 연산자를 찾을 수 없습니다.

해결법

  1. ==============================

    1.즉 될 것이다 :

    즉 될 것이다 :

    db.users.find({"name": /.*m.*/})
    

    또는 유사한 :

    db.users.find({"name": /m/})
    

    당신은 "m"어딘가에 포함 뭔가를 찾고있어 (연산자 SQL '%'는 정규식에 해당 '. *')이 아닌 문자열의 시작 부분에 고정 "m"가 무엇인가를.

    참고 : MongoDB의는 SQL에서 "LIKE"보다 더 강력한 정규 표현식을 사용합니다. 정규 표현식으로 당신은 당신이 상상하는 것이 어떤 패턴을 만들 수 있습니다.

    정규 표현식에 대한 자세한 정보를 원하시면이 링크를 참조 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

  2. ==============================

    2.

    db.users.insert({name: 'paulo'})
    db.users.insert({name: 'patric'})
    db.users.insert({name: 'pedro'})
    
    db.users.find({name: /a/})  //like '%a%'
    

    아웃 : 파울로, 패트릭

    db.users.find({name: /^pa/}) //like 'pa%' 
    

    아웃 : 파울로, 패트릭

    db.users.find({name: /ro$/}) //like '%ro'
    

    아웃 : 페드로

  3. ==============================

    3.에서

    에서

    넌 할 수있어:

    db.users.find({'name': {'$regex': 'sometext'}})
    
  4. ==============================

    4.PHP에서는 다음과 같은 코드를 사용할 수 있습니다 :

    PHP에서는 다음과 같은 코드를 사용할 수 있습니다 :

    $collection->find(array('name'=> array('$regex' => 'm'));
    
  5. ==============================

    5.당신은 몽고에 그것을 위해 정규식 사용합니다.

    당신은 몽고에 그것을 위해 정규식 사용합니다.

    예컨대 : db.users.find ({ "이름"/ ^ m /})

  6. ==============================

    6.많은 답변이 이미 있습니다. 내가 정규식 문자열 검색에 대한 요구 사항 및 솔루션의 다른 유형을 제공하고 있습니다.

    많은 답변이 이미 있습니다. 내가 정규식 문자열 검색에 대한 요구 사항 및 솔루션의 다른 유형을 제공하고 있습니다.

    당신은 같은 단어 즉를 포함하는 정규식으로 할 수 있습니다. 또한 당신이 $ 옵션을 사용할 수 있습니다 => 난에 대한 대소 문자 구분 검색

    문자열을 포함합니다

    db.collection.find({name:{'$regex' : 'string', '$options' : 'i'}})
    

    합니까뿐만 아니라 정규식 문자열을 포함합니다

    db.collection.find({name:{'$regex' : '^((?!string).)*$', '$options' : 'i'}})
    

    정확한 대소 문자를 구분 문자열

    db.collection.find({name:{'$regex' : '^string$', '$options' : 'i'}})
    

    문자열로 시작

    db.collection.find({name:{'$regex' : '^string', '$options' : 'i'}})
    

    문자열 끝

    db.collection.find({name:{'$regex' : 'string$', '$options' : 'i'}})
    

    책갈피, 당신이해야 할 수있는 다른 변경에 대한 참조로이 보관하십시오.

  7. ==============================

    7.당신이 개 선택할 수 있습니다

    당신이 개 선택할 수 있습니다

    db.users.find({"name": /string/})
    

    또는

    db.users.find({"name": {"$regex": "string", "$options": "i"}})
    

    두 번째에서 당신은 "내가"옵션의 경우를 구분을 사용하여 찾을처럼, 더 많은 옵션을 가지고있다. 그리고 "문자열"에 대해, 당신은 같이 사용할 수있다 ".string." (% 문자열 %), 또는 "문자열입니다. *"(문자열 %)와 ". * 문자열) 예를 들어 (% 문자열). 당신이 원하는대로 당신은 정규 표현식을 사용할 수 있습니다.

    즐겨!

  8. ==============================

    8.Node.js를를 사용하는 경우, 그것은 당신이 쓸 수 있다고 말한다 :

    Node.js를를 사용하는 경우, 그것은 당신이 쓸 수 있다고 말한다 :

    db.collection.find( { field: /acme.*corp/i } );
    //or
    db.collection.find( { field: { $regex: 'acme.*corp', $options: 'i' } } );
    

    또한, 당신이 쓸 수 있습니다 :

    db.collection.find( { field: new RegExp('acme.*corp', 'i') } );
    
  9. ==============================

    9.이미 유 해답을 가지고 있지만, 소문자 구분와 정규식과 일치

    이미 유 해답을 가지고 있지만, 소문자 구분와 정규식과 일치

    다음과 같은 쿼리를 사용할 수 있습니다

    db.users.find ({ "name" : /m/i } ).pretty()
    

    은 / m에서의 I / i를 소문자 구분하고 .pretty을 ()보다 꽤 출력을 제공 나타낸다

  10. ==============================

    10.Node.js를에서 몽구스의 경우

    Node.js를에서 몽구스의 경우

    db.users.find({'name': {'$regex': '.*sometext.*'}})
    
  11. ==============================

    11.당신은 2.6 MongoDB의 새로운 기능을 사용할 수 있습니다 :

    당신은 2.6 MongoDB의 새로운 기능을 사용할 수 있습니다 :

    db.foo.insert({desc: "This is a string with text"});
    db.foo.insert({desc:"This is a another string with Text"});
    db.foo.ensureIndex({"desc":"text"});
    db.foo.find({
        $text:{
            $search:"text"
        }
    });
    
  12. ==============================

    12.PHP의 경우처럼을 몽고. 내가 좋아하는 PHP는 몽고와 몇 가지 문제가 있었다. 내가 정규식 PARAMS을 연결하는 PHP와 함께 필드 시작을 찾을 몽고 어떤 상황에 도움이 것을 발견했다. 나는 더 많은 인기를 스레드에 기여하기 위해 여기에 게시 할 것입니다 생각

    PHP의 경우처럼을 몽고. 내가 좋아하는 PHP는 몽고와 몇 가지 문제가 있었다. 내가 정규식 PARAMS을 연결하는 PHP와 함께 필드 시작을 찾을 몽고 어떤 상황에 도움이 것을 발견했다. 나는 더 많은 인기를 스레드에 기여하기 위해 여기에 게시 할 것입니다 생각

    예컨대

    db()->users->insert(['name' => 'john']);
    db()->users->insert(['name' => 'joe']);
    db()->users->insert(['name' => 'jason']);
    
    // starts with
    $like_var = 'jo';
    $prefix = '/^';
    $suffix = '/';
    $name = $prefix . $like_var . $suffix;
    db()->users->find(['name' => array('$regex'=>new MongoRegex($name))]);
    output: (joe, john)
    
    // contains
    $like_var = 'j';
    $prefix = '/';
    $suffix = '/';
    $name = $prefix . $like_var . $suffix;
    db()->users->find(['name' => array('$regex'=>new MongoRegex($name))]);
    
    output: (joe, john, jason)
    
  13. ==============================

    13.쿼리처럼 nodejs 프로젝트 및 사용 몽구스 사용

    쿼리처럼 nodejs 프로젝트 및 사용 몽구스 사용

    var User = mongoose.model('User');
    
    var searchQuery={};
    searchQuery.email = req.query.email;
    searchQuery.name = {$regex: req.query.name, $options: 'i'};
    User.find(searchQuery, function(error, user) {
                    if(error || user === null) {
                        return res.status(500).send(error);
                    }
                    return res.status(200).send(user);
                });
    
  14. ==============================

    14.MongoDB를 나침반으로, 당신은 같은 엄격한 모드 구문을 사용합니다 :

    MongoDB를 나침반으로, 당신은 같은 엄격한 모드 구문을 사용합니다 :

    { "text": { "$regex": "^Foo.*", "$options": "i" } }
    

    (에서 MongoDB를 나침반, 그것은 '당신이 대신 "를 사용하는 것이 중요합니다)

  15. ==============================

    15.SQL에서 '와 같은'쿼리는 다음과 같은 모양입니다 :

    SQL에서 '와 같은'쿼리는 다음과 같은 모양입니다 :

    select * from users where name like '%m%'
    

    MongoDB의 콘솔에서, 그것은 다음과 같습니다 :

    db.users.find({"name": /m/})     // Not JSON formatted
    
    db.users.find({"name": /m/}).pretty()  // JSON formatted
    

    생산은 더 읽을 JSON 구조 형식의 모든 장소에서 또한 매우 () 메소드의 의지.

  16. ==============================

    16.정규식은 비싼 과정이다.

    정규식은 비싼 과정이다.

    또 다른 방법은 텍스트의 인덱스를 만든 다음 $ 검색을 사용하여 검색하는 것입니다.

    당신이 검색 할 수 있도록하려는 필드의 텍스트 색인을 만듭니다

    db.collection.createIndex({name: 'text', otherField: 'text'});
    

    텍스트 인덱스의 문자열 검색 :

    db.collection.find({
      '$text'=>{'$search': "The string"}
    })
    
  17. ==============================

    17.문이 어떤 JS 스크립트를 구축하는 곳에 당신은 사용할 수 있습니다 :

    문이 어떤 JS 스크립트를 구축하는 곳에 당신은 사용할 수 있습니다 :

    db.myCollection.find( { $where: "this.name.toLowerCase().indexOf('m') >= 0" } );
    

    참조 : http://docs.mongodb.org/manual/reference/operator/where/

  18. ==============================

    18.이동과 산화 마그네슘 드라이버에서 :

    이동과 산화 마그네슘 드라이버에서 :

    Collection.Find(bson.M{"name": bson.RegEx{"m", ""}}).All(&result)
    

    여기서 결과는 잘 나가 타입의 구조체의 인스턴스입니다

  19. ==============================

    19.다음과 같이 일치하는 정규 표현식을 사용합니다. 'I'쇼 케이스 무감각.

    다음과 같이 일치하는 정규 표현식을 사용합니다. 'I'쇼 케이스 무감각.

    var collections = mongoDatabase.GetCollection("Abcd");
    
    var queryA = Query.And(
             Query.Matches("strName", new BsonRegularExpression("ABCD", "i")), 
             Query.Matches("strVal", new BsonRegularExpression("4121", "i")));
    
    var queryB = Query.Or(
           Query.Matches("strName", new BsonRegularExpression("ABCD","i")),
           Query.Matches("strVal", new BsonRegularExpression("33156", "i")));
    
    var getA = collections.Find(queryA);
    var getB = collections.Find(queryB);
    
  20. ==============================

    20.또한 작동 변수 템플릿 리터럴을 사용 :

    또한 작동 변수 템플릿 리터럴을 사용 :

    { "FIRSTNAME": {$ 정규식 :. '^ $ {req.body.firstname} *`, $ 옵션 :'시 '}}

  21. ==============================

    21.아래와 같이처럼 쿼리 될 것이다

    아래와 같이처럼 쿼리 될 것이다

    db.movies.find({title: /.*Twelve Monkeys.*/}).sort({regularizedCorRelation : 1}).limit(10);
    

    스칼라 ReactiveMongo API에 대한,

    val query = BSONDocument("title" -> BSONRegex(".*"+name+".*", "")) //like
    val sortQ = BSONDocument("regularizedCorRelation" -> BSONInteger(1))
    val cursor = collection.find(query).sort(sortQ).options(QueryOpts().batchSize(10)).cursor[BSONDocument]
    
  22. ==============================

    22.패턴 :뿐만 아니라 몽고 { 'regex_pattern' '$ 정규식'}로 자바 스크립트 / regex_pattern / 패턴 모두를 사용하는 이유가 보인다. 참조 : MongoBD 정규식 구문 제한

    패턴 :뿐만 아니라 몽고 { 'regex_pattern' '$ 정규식'}로 자바 스크립트 / regex_pattern / 패턴 모두를 사용하는 이유가 보인다. 참조 : MongoBD 정규식 구문 제한

    이것은 완전한 정규식 튜토리얼 아니지만, 나는 매우 위의 모호한 게시물을 투표를 본 후에 테스트를 실행하는 데 영감을했다.

    > ['abbbb','bbabb','bbbba'].forEach(function(v){db.test_collection.insert({val: v})})
    
    > db.test_collection.find({val: /a/})
    { "val" : "abbbb" }
    { "val" : "bbabb" }
    { "val" : "bbbba" }
    
    > db.test_collection.find({val: /.*a.*/})
    { "val" : "abbbb" }
    { "val" : "bbabb" }
    { "val" : "bbbba" }
    
    > db.test_collection.find({val: /.+a.+/})
    { "val" : "bbabb" }
    
    > db.test_collection.find({val: /^a/})
    { "val" : "abbbb" }
    
    > db.test_collection.find({val: /a$/})
    { "val" : "bbbba" }
    
    > db.test_collection.find({val: {'$regex': 'a$'}})
    { "val" : "bbbba" }
    
  23. ==============================

    23.당신이 봄 - 데이터 MongoDB를를 사용하는 경우이 방법으로이 작업을 수행 할 수 있습니다 :

    당신이 봄 - 데이터 MongoDB를를 사용하는 경우이 방법으로이 작업을 수행 할 수 있습니다 :

    String tagName = "m";
    Query query = new Query();
    query.limit(10);        
    query.addCriteria(Criteria.where("tagName").regex(tagName));
    
  24. ==============================

    24.몽고 쉘 지원 정규식으로, 그 완전히 가능합니다.

    몽고 쉘 지원 정규식으로, 그 완전히 가능합니다.

    db.users.findOne({"name" : /.*sometext.*/});
    

    우리는 대소 문자를 구분하는 쿼리를 원하는 경우 아래 그림처럼, 우리는, "I"옵션을 사용할 수 있습니다 :

    db.users.findOne({"name" : /.*sometext.*/i});
    
  25. ==============================

    25.당신이 원하는 경우 몽고에 '처럼'검색은 다음이 될 것입니다이 쿼리를 사용하여 $ 정규식으로 가야한다

    당신이 원하는 경우 몽고에 '처럼'검색은 다음이 될 것입니다이 쿼리를 사용하여 $ 정규식으로 가야한다

    db.product.find ({이름 : {$ 정규식 : / m / I}})

    더 당신이 문서를 읽을뿐만 아니라 수 있습니다. https://docs.mongodb.com/manual/reference/operator/query/regex/

  26. ==============================

    26.나는 MongoDB를에 MYSQL 쿼리를 번역하는 무료 도구를 발견했다. http://www.querymongo.com/ 나는 여러 쿼리 확인. 내가 거의 모든 볼로는 정확합니다. 그에 따르면, 대답은

    나는 MongoDB를에 MYSQL 쿼리를 번역하는 무료 도구를 발견했다. http://www.querymongo.com/ 나는 여러 쿼리 확인. 내가 거의 모든 볼로는 정확합니다. 그에 따르면, 대답은

    db.users.find({
        "name": "%m%"
    });
    
  27. ==============================

    27.(인덱스!)를 사용하여 집계 문자열 검색 :

    (인덱스!)를 사용하여 집계 문자열 검색 :

    db.collection.aggregate([{
            $project : {
                fieldExists : {
                    $indexOfBytes : ['$field', 'string']
                }
            }
        }, {
            $match : {
                fieldExists : {
                    $gt : -1
                }
            }
        }, {
            $limit : 5
        }
    ]);
    
  28. ==============================

    28.MongoRegex는 더 이상 사용되지 않습니다. 사용 MongoDB를 \ BSON \ 정규식

    MongoRegex는 더 이상 사용되지 않습니다. 사용 MongoDB를 \ BSON \ 정규식

    $regex = new MongoDB\BSON\Regex ( '^m');
    $cursor = $collection->find(array('users' => $regex));
    //iterate through the cursor
    
  29. ==============================

    29.

    db.customer.find({"customerid": {"$regex": "CU_00000*", "$options": "i"}}).pretty()
    

    우리가 문자열 패턴을 검색 할 때, 항상 우리가 확실하지 사건에 대해 때와 같은 위의 패턴을 사용하는 것이 좋습니다. 희망이 도움이!

  30. ==============================

    30.Dipakaparmara 문자열, 디팍, Parmar

    Dipakaparmara 문자열, 디팍, Parmar

    db.getCollection('yourdb').find({"name":/^dee/})
    

    및 디팍 parmar

    db.getCollection('yourdb').find({"name":/d/})
    

    Dipakaparmara 숫자, 디팍

    db.getCollection('yourdb').find({"name":/mar$/})
    

    Dipakaparmara 숫자, Parmar

  31. from https://stackoverflow.com/questions/3305561/how-to-query-mongodb-with-like by cc-by-sa and MIT license