복붙노트

[MONGODB] 방법) (MongoDB의 네이티브 findOne의 필드 이름으로 변수를 사용하는 방법?

MONGODB

방법) (MongoDB의 네이티브 findOne의 필드 이름으로 변수를 사용하는 방법?

나는 MongoDB를이 데이터를 가지고 :

{  
    "name": "Amey",
    "country": "India",
    "region": "Dhule,Maharashtra"
}

나는 쿼리에 변수로 필드 이름을 통과하면서 데이터를 검색 할 수 있습니다.

작동하지 않습니다 다음 :

var name = req.params.name;
var value = req.params.value;
collection.findOne({name: value}, function(err, item) {
    res.send(item);
});

어떻게 두 필드의 이름과 값의 동적 유지 MongoDB를 조회 할 수 있습니다?

해결법

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

    1.동적 쿼리 개체의 키를 설정해야합니다 :

    동적 쿼리 개체의 키를 설정해야합니다 :

    var name = req.params.name;
    var value = req.params.value;
    var query = {};
    query[name] = value;
    collection.findOne(query, function (err, item) { ... });
    

    당신이 할 때 {이름 : 값을}, 키는 문자열 '이름'이 아닌 변수 이름의 값입니다.

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

    2.그냥]에서 변수를 넣어

    그냥]에서 변수를 넣어

    var name=req.params.name;
    var value = req.params.value;
    collection.findOne({[name]:value}, function(err, item) {
    res.send(item);
    });
    
  3. ==============================

    3.난 당신이 중첩 된 필드에만 (안 값)에 관한 질의를 만들려고 노력하는 경우 명확히하고자, 같은 당신이이 문서의 필드 "이름"을 조회 할 경우 :

    난 당신이 중첩 된 필드에만 (안 값)에 관한 질의를 만들려고 노력하는 경우 명확히하고자, 같은 당신이이 문서의 필드 "이름"을 조회 할 경우 :

    {
        loc: [0, 3],
        unit: {
            name : "playername"
        }
    }
    

    - (업데이 트를 사용하여 내 경우처럼)이 작동합니다

    mdb.cords.updateOne(
        {_id: ObjectID(someid)}, 
        {$set: {[query]: newValue}}, 
        function (err, result) {
            ...
        }
    }
    

    간단히 괄호 [쿼리]를 둘러싸는 것은 오히려 경로 문자 아니지만 것을 MongoDB를 알려줍니다.

  4. from https://stackoverflow.com/questions/17039018/how-to-use-a-variable-as-a-field-name-in-mongodb-native-findone by cc-by-sa and MIT license