我的mongoDB集合有一些记录,如:
{ "_id" : ObjectId("4d99b276368394f5130022fc") }
{ "_id" : ObjectId("4d99b276368394f5130022fd") }
{ "_id" : ObjectId("4d99b276368394f5130022fe") }
{ "_id" : ObjectId("4d99b276368394f5130022ff") }
{ "_id" : ObjectId("4d99b27d368394f613002470") }
{ "_id" : ObjectId("4d99b27d368394f613002471") }
{ "_id" : ObjectId("4d99b27d368394f613002472") }
由于BSON objectId的最后一个字节或多或少是连续的,我打算分开 它们在多个通道中,例如“使用ObjectId的特定字母结束”。
(相当于MySql中的RLIKE)。 由于objectIds是字节而不是字符串,我的正则表达式似乎不起作用。 我试过像:
db.myColl.findOne( { "_id" : /b$/ } , { "_id":1} )
null
> db.myColl.findOne( { "_id" : /^4/ } , { "_id":1} )
null
基于objectId对数据进行分区的任何建议?喜欢objectId的最后一个字母 或其他能给出或多或少平等分配的东西?
编辑: 我发现了一种对我有用的方法:
db.myColl.findOne({ $where: "this._id.toString()[23] == 1" } ) // gives me records with ObjectId ending with 1 .
仍欢迎其他建议
答案 0 :(得分:1)
也许不是你想要的,但希望非常接近......
db.mycollection.find({_id: {$gte: new ObjectId("4d99b27d368394f613002472")}})
答案 1 :(得分:0)
因此,如果您想利用MongoDB中的自动分片功能,请阅读以下内容