我試圖構建一個要傳遞給MongoDB
的JavaScript對象。此數據庫使用運算符$or
,它允許您一次搜索屬性中的多個鍵。在JavaScript對象中聲明不屬於字符串的屬性
因此,$or
運算符不能用加引號,因爲它實際上是查找函數中的一個運算符。
僅供參考,查找函數如下:
db.inventory.find({ price:1.99, $or: [ { qty: { $lt: 20 } }, { sale: true } ] })
我已經找到一種方法來「打造」的$or
屬性一些變數,但由於某些原因,屬性名一直被視爲雖然這是一個字符串。這裏是我的代碼:
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);
在我的控制檯,這是被輸出爲:
{ '$or': [ { designer: 'abc' }, { designer: 'def' } ] }
我使用類似的代碼在其他地方(與$push
而不是$or
),它工作得很好,我用完全相同的方式聲明它。
是否可以確保屬性不是被視爲字符串?我在這裏如何實現這一目標?
'criteria ['$ or']'這是否返回對象? – rps
@rps我不太確定你在問什麼。它返回數組,是的。 – Jascination
我問,因爲我想知道爲什麼你想要的屬性是一個對象而不是一個字符串使用時,你可以得到對象本身?那是所有 – rps