使用Nodejs从MongoDB中删除项目

时间:2015-04-27 12:58:28

标签: node.js mongodb

我正在尝试从所有引用它的集合中删除用户ID。我在表单中引入了一个用户ID,并希望删除每个业务集合中对它的每个引用。我知道下面的查询不起作用,但它显示了我当前的方法。

db.collection('business', function (err, allBus){
    allBus.update({}, { $pull: {followers: { userID } } } );
});

这是我的数据,任何想法?

{
    "_id" : ObjectId("55355d0ab063708c0b73809e"),
    "address" : "Donegal",
    "businessName" : "burkes shoes",
    "email" : "info@burkes.ie",
    "followers" : [
            ObjectId("55300f5208224af428d1beaf"),
            ObjectId("553129666252d2fc0a4634e4")
    ],
    "gpsLat" : "55.1763595",
    "gpsLong" : "-7.7923",
    "homeDomain" : "www.burkes.ie",
    "imgpath" : "\\images\\uploads\\57461Burkes_logo_1429560586607.jpg",
    "password" : "1",
    "role" : "business"
}

1 个答案:

答案 0 :(得分:1)

如果userID是一个字符串,则需要先将其强制转换为ObjectID,然后才能在查询中使用它。这样的事情应该是神奇的:

var ObjectID = require("mongodb").ObjectID,
    userID = new ObjectId("55300f5208224af428d1beaf"); 
/*
   if userID is a string then this will work 
   var userID = new ObjectId(userID);
*/
db.business.update(
    {"followers": userID}, 
    {
        "$pull": { "followers": userID }
    },
    { multi: true }
);

上面的查询将比没有查询的更新具有更好的性能,因为它首先过滤在其关注者数组中具有userID值的元素的文档,然后通过拉{{1}来更新匹配的文档来自数组的值。