1 由于业务需要,需要 把 _id的批量转换为 ObjectId类型,原来是int类型的
2 首先你需要找出来的是那些 uid 字段还是属于 String 类型的文档, MongoDB 的文档给出了按字段类型查找文档的方
http://docs.mongodb.org/manual/reference/operator/query/type/#_S_type
Type Number
Double 1
String 2
Object 3
Array 4
Binary data 5
Undefined (deprecated) 6
Object id 7
Boolean 8
Date 9
Null 10
Regular Expression 11
JavaScript 13
Symbol 14
JavaScript (with scope) 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255
Max key 127
//下面是python的源码
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from bson.objectid import ObjectId
import pymongo
MONGO_HOST = '210.73.220.187'
#MONGO_HOST = '127.0.0.1'
MONGO_PORT = 27017
MONGO_DATABASE = 'papers'
conn = pymongo.Connection(MONGO_HOST, MONGO_PORT)
db = conn[MONGO_DATABASE]
rows = db.sohu.find({ '_id' : { '$type' : 16 }})
for row in rows:
print row['_id']
db.sohu.remove({ '_id' : row['_id']})
row['_id'] = ObjectId()
rows = db.sohu.save(row)