我在使用 $或运算符时遇到了一些问题。我正在制作有点复杂查询,如下所示:
Tag.findOne({
'$and' : [ {
'$or' : [ {
'number' : tags[i]
}, {
'title.english' : tags[i]
}, {
'title.japanese' : tags[i]
} ] } , {
'properties.status' : 'published'
} ] },
function(e, tag) {
//...
我的架构如下所示:
var tagSchema = new Schema({
title: {
english: { type: String, required: true, trim: true, unique: true, max: 50 },
japanese: { type: String, required: true, trim: true, unique: true, max: 50 },
alternative: [{ type: String, trim: true, max: 50 }]
},
//...
number: Number,
});
如果我只是在'数字'等于标签[i] 时使用它,我会得到一个结果,但标题属性。 如果我现在删除
{ 'number' : tags[i] },
标题属性都有效。当我使用'_ id'属性而不是'number'时,我遇到了同样的问题,我真的没有看到问题。
那么此查询的问题是什么?
答案 0 :(得分:1)
将{ 'number' : isNaN(tags[i]) ? 0 : tags[i] },
替换为NaN
因此,如果标记不是数字,那么您在尝试转换时就不会出错。如果是0
我使用了number
,但您可以使用任何无法显示为each
属性的值。