我有一个故事集合,每个故事都有标签:
var tweets = <%= tweets %>;
var json = JSON.parse(tweets.replace(/"/g, '\"'));
for (var t in json) {
var row = $('<row></row>');
row.append('<th style="border:1px solid black">' + t + '</th><td style="border:1px solid black">' + json[t][0]+ '</td>');
$("#tweetTable").append(row);
}
我正在尝试选择包含所有标记var StorySchema = new Schema({
id : {
type : Number,
unique : true,
},
name : String,
tags : [{
id : Number,
name : String,
url : String,
}],
});
且没有标记[{id:1},{id:2},{id:3}]
我最接近的是:
{id:4},{id:5}
但似乎{
tags : {
$all:[{
$elemMatch : {
id: 1
}
}, {
$elemMatch : {
id: 2
}
}, {
$elemMatch : {
id: 3
}
}],
$nin : [{
id : 4
}, {
id : 5
}]
}
}
部分没有做到这一点。
另外,我不清楚我为什么需要在选择器的$nin
部分使用$elemMatch
。如果我把它留下来,我就没有结果。任何澄清将不胜感激:))
答案 0 :(得分:0)
我想我找到了解决方案:
underscore.map()
或者,编写一个构建选择器的js函数(使用var selector = {
tags : {
$all : _.map(includeTagIds, function(includeTagId){
return {
$elemMatch : {
id : includeTagId
}
};
}),
$not : {
$elemMatch : {
id: { $in : excludeTagIds }
}
}
}
};
):
> Contact: <sip:1000@121.xxx:53753;ob>