2014-10-28 74 views
0

我有一個名爲Users的MongoDB集合。 我不知道對象類型的提前。 這個集合至少有3種不同類型的對象結構。例如:MongoDb在集合中選擇不同的對象類型

類型1:

{ 
"_id" : "9e1736d4-f3a1-47ed-bb51-3318129664f0", 
"userid" : 6711, 
"registerDate" : "2014-10-28T14:42:06", 
"lastLoginDate" : "2014-10-28T14:42:06", 

} 

類型2:

{ 
"_id" : "9e1736d4-f3a1-47ed-bb51-3318129664f1", 
"userid" : 6712, 
"email" : "[email protected]", 
"username" : "john doe", 

} 

類型3:

{ 
"_id" : "9e1736d4-f3a1-47ed-bb51-3318129664f2", 
"userid" : 63713, 
"city" : "orange", 
"state" : "new york", 
"country" : "US", 
} 

我怎樣才能獲得不同的類型(或從每一個頂面第一對象類型)從我的集合? 所以如果我有100萬用戶和3種不同的結構,我想得到3個結果。

回答

0

添加文檔的字段「類型」標識類型。 然後使用db.collection.group按您的願望對結果進行分組。每種類型

+0

不幸的是我沒有對數據庫的修改權限,只讀。我只是不能通過查詢來做到這一點? – 2014-10-28 15:22:01

+0

對於百萬用戶來說,沒有一種有效的方法來實現它。如果您可以創建新的集合,則可以通過對文檔字段的已排序名稱進行拼接,然後按該字段進行分組,從而在新集合中通過MAP創建替代「類型」字段。你仍然需要一些'type'字段,但你可以創建一個新的集合。 但效率很低。 – 2014-10-28 15:34:31

0

問題查詢,您可能

db.c.findOne({registerDate: {$existed: true}}); 
db.c.findOne({email: {$existed: true}}); 
db.c.findOne({city: {$existed: true}}); 

這應該是非常快速和簡單。 :)

+0

謝謝,但問題是我不知道對象類型提前:) – 2014-10-28 15:37:32

+0

@Teoman shipahi,哦,我的上帝。那麼需要明確的差異定義。 – Wizard 2014-10-28 15:41:58

+0

我會在說明中添加它。 – 2014-10-28 15:46:58

相關問題