mongodb-native 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를 쿼리해야 합니까?
쿼리 객체의 키를 동적으로 설정해야 합니다.
var name = req.params.name;
var value = req.params.value;
var query = {};
query[name] = value;
collection.findOne(query, function (err, item) { ... });
할 때{name: value}
키는 string 입니다.'name'
변수 값이 아닌name
.
변수를 []에 넣기만 하면 됩니다.
var name=req.params.name;
var value = req.params.value;
collection.findOne({[name]:value}, function(err, item) {
res.send(item);
});
이 문서에서 "name" 필드를 쿼리하는 경우와 같이 중첩된 필드만 쿼리하려는 경우(값은 쿼리하지 않음)는 다음과 같습니다.
{
loc: [0, 3],
unit: {
name : "playername"
}
}
(내 경우와 마찬가지로 업데이트 사용):
mdb.cords.updateOne(
{_id: ObjectID(someid)},
{$set: {[query]: newValue}},
function (err, result) {
...
}
}
간단히 동봉[query]
괄호 안의 mongodb는 문자 그대로가 아니라 경로임을 나타냅니다.
개체가 중첩된 경우 이렇게 사용합니다.
직접 객체:-
var name=req.params.name;
var value = req.params.value;
collection.findOne({[name]:value}, function(err, item) {
res.send(item);
});
개체가 중첩되었습니다.-
var surname=req.params.surname;
var value = req.params.value;
var condition = `name.${surname}`
collection.findOne({[condition]:value}, function(err, item) {
res.send(item);
});
언급URL : https://stackoverflow.com/questions/17039018/how-to-use-a-variable-as-a-field-name-in-mongodb-native-findone
'programing' 카테고리의 다른 글
브라우저 타임아웃 (0) | 2023.03.05 |
---|---|
Springboot에 의한 스케줄된 웹 소켓 푸시 (0) | 2023.03.05 |
ng클래스가 작동하지 않나요? (0) | 2023.03.05 |
각도 js에서 사용되는 "변형" 함수는 무엇입니까? (0) | 2023.03.05 |
물결 괄호 없는 화살표 기능 (0) | 2023.02.28 |