将所有类型为ObjectId的文档删除为mongodb中的_id字段

时间:2014-11-19 06:46:16

标签: mongodb mongodb-query

在我的收藏中,我有一些文档,其中一些字段为_id字段为字符串,另一些字段为ObjectId

{_id:"xxxx"}
{_id:"yyyy"}
{_id:"ObjectId(zzz)"}
{_id:"ObjectId(xxxssssx)"}

我想删除_id字段类型ObjectId(此处为最后的文档)

有没有解决方案?

4 个答案:

答案 0 :(得分:1)

如果您的文档有ObjectId,则可以使用$type

例如,如果您的收藏品是

{
    "_id" : "foo"
}


{
    "_id" : "bar"
}


{
    "_id" : ObjectId("546c52074e418d78ff419897")
}


{
    "_id" : ObjectId("546c52074e418d78ff419898")
}

仅删除ObjectId

db.coll.remove({_id:{$type:7}})

如果你的ObjectId就像

{_id:"ObjectId(zzz)"}
{_id:"ObjectId(xxxssssx)"}

你可以做到

db.coll.remove({"_id": {$regex:"^ObjectId"}})

如果您只想删除一个文档

db.coll.remove({"_id": {$regex:"^ObjectId"}},{justOne:true})

显然,一个特定的_id

db.coll.remove({"_id" : "ObjectId(xxxssssx)"})

答案 1 :(得分:0)

对于删除对象,您应该在新的ObjectId中写入,因此下面的查询只删除了给定的对象Id

db.collectioName.remove({"_id":new ObjectId("xxxssssx")})

或者只是尝试这个

db.collectioName.remove({"_id": ObjectId("xxxssssx")})

答案 2 :(得分:0)

由于您无法更新ID How update the _id of one MongoDB Document? 您应该删除您的文档并再次插入,如下面的代码所示。

db.test.find().forEach(function(item)
{
    if(typeof item._id == 'object')
    {                  
        var id = item._id.toString().replace('ObjectId(', '').replace(')', '');               
        db.test.remove({'_id': item._id});

        item._id = id;
        db.test.insert(item);
    }
});

答案 3 :(得分:0)

您可以使用$type运算符。 type的{​​{1}}为Object Id

7

这会删除 db.collection.remove({"_id":{$type:7}}) 字段表示为_id的所有文档。