MongoDB
으로 전달할 자바 스크립트 객체를 생성하려고합니다. 이 데이터베이스는 한 번에 속성의 여러 키를 검색 할 수있는 연산자 $or
을 사용합니다. 실제로 룩업 함수 연산자이기 때문에이 때문에 문자열이 아닌 Javascript 객체에서 속성 선언하기
$or
연산자
는 따옴표하지있다. 참고로
은 조회 기능은 다음과 같습니다 : 나는 '빌드'일부 변수의 밖으로 $or
속성에 방법을 찾은
db.inventory.find({ price:1.99, $or: [ { qty: { $lt: 20 } }, { sale: true } ] })
하지만 어떤 이유에 대한 속성 이름처럼 치료를 받고 계속 그것은 문자열입니다. 여기에 내 코드입니다 : 난,
{ '$or': [ { designer: 'abc' }, { designer: 'def' } ] }
내가 다른 곳 (대신 $or
의 $push
와) 유사한 코드를 사용하고 그것을 잘 작동합니다 : 내 콘솔에서
var criteria = { $or: []};
properties.forEach(function(property) {
var propParts = property.split('=');
if(!(propParts[1].indexOf('&') === -1)){
var value = propParts[1].match(/[-'"\w\s]+/g);
for (var i = 0; i<value.length; i++){
var tempObj = {};
tempObj[propParts[0]] = value[i];
criteria.$or.push(tempObj);
}
}else{
criteria[propParts[0]] = new RegExp(propParts[1], "i");
}
});
if(criteria.$or.length<=0){
delete criteria.$or;
}
console.log(criteria);
,이 출력되는대로입니다 정확히 같은 방식으로 선언합니다.
이이 문자열로 처리되지 않도록 할 수 있습니까? 여기 어떻게 할 수 있습니까?
'criteria [ '$ or']'이 객체를 반환합니까? – rps
@rps 나는 당신이 무엇을 요구하고 있는지 잘 모르겠습니다. 네, 배열을 반환합니다. – Jascination
나는 물체 자체를 얻을 수있을 때 왜 그 속성이 문자열 대신에 객체가되기를 원하는지 왜 궁금해했다. thats all – rps