2013-07-24 177 views
1

我想查詢MongoDB數據庫中的集合以查找包含ObjectID的一部分的所有記錄。對於一個普通的字符串我可以用這樣的正則表達式:mongo objectid'contains'查詢

db.teams.find({"some_string": /^51eed/}) 

但我會怎麼做一個對象ID類似的東西?

具體來說,我有一個集合,它看起來是這樣的:

{ "status" : 0, "_id" : ObjectId("51e97ff613e737801d000002") } 
{ "status" : 0, "_id" : ObjectId("51ee7513d1f7c57420000002") } 
{ "status" : 0, "_id" : ObjectId("51eed9dd5b605af404000002") } 
{ "status" : 0, "_id" : ObjectId("51eedab39108d8101c000002") } 

我想查詢(在蒙戈),對於其中的ObjectId與「51eed」開頭的所有記錄。非常感謝您的幫助。

回答

2

你可以簡單地用一個範圍搜索做到這一點,開始在"51eed0000000000000000000""51eee0000000000000000000"結束(注意 「d」 - > 「E」):

db.teams.find({ 
    _id: { 
     $gte: ObjectId("51eed0000000000000000000"), 
     $lt: ObjectId("51eee0000000000000000000"), 
    } 
}) 
+0

MEH說對了一半:P – Sammaye

+0

感謝您的快速回應傢伙...非常有幫助。 – rasmeister

0

你可能只是它放入一個新的ObjectId0「補其餘的就像:

db.teams.find({_id:{$gte:ObjectId("51eed0000000000000000000")}}) 

應該做的伎倆。