在我的收藏中,我有一些文档,其中一些字段为_id
字段为字符串,另一些字段为ObjectId
{_id:"xxxx"}
{_id:"yyyy"}
{_id:"ObjectId(zzz)"}
{_id:"ObjectId(xxxssssx)"}
我想删除_id字段类型ObjectId(此处为最后的文档)
有没有解决方案?
答案 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})
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
的所有文档。