通过与嵌套阵列中的不同阵列进行匹配来移除嵌套阵列中的元素
问题描述:
我在我的Mongodb中嵌入了一组推文,并且每条推文都有一个tweetID(不要与MongoDB分配的ID混淆)。通过与嵌套阵列中的不同阵列进行匹配来移除嵌套阵列中的元素
{
"_id": {
"$oid": "54d95cb062917897ad26c5e5"
},
"name": "foo",
"tweets": [
{
"tweetID": "1234",
"text": "bla bla bla"
},
{
"tweetID": "4321",
"text": "bla bla bla",
}
... and so on
现在在我的应用程序中,我有另一个数组,应该被删除的tweetID。
var tweetsToBeDeleted = [ "1234", "4321" ];
,我试图让猫鼬有这样做的:
ChannelsModel.update({ },
{ $pull: { tweets: { $elemMatch: { tweetID: tweetsToBeDeleted } } } },
{ multi: true },
function (err) {
console.log("err - " + err);
}
);
但是,当我尝试运行此,没有被删除。错误回调将被执行,但err
是null
。
任何想法?
在此先感谢!
答
使用$in
当匹配多个值的字段:
var tweetsToBeDeleted = [ "1234", "4321" ];
ChannelsModel.update({ },
{ $pull: { tweets: { tweetID: { $in: tweetsToBeDeleted } } } },
{ multi: true },
function (err) {
console.log("err - " + err);
}
);