2012-11-12 16 views
1
db.foo.find(); 


_id | type 
------------- 
10001  1 
10002 'a' 
10003 [1, 2, 3, 4] 

如你所知,在$型將匹配蒙戈查詢類型代碼,就像這樣:得到JS腳本MongoDB的數據類型

db.foo.find({type: {$type: 4}}); 

_id |鍵入

----------

10003,[1,2,3,4]

然後,我寫稱爲一個javascript外殼腳本test.js

var curs = db.foo.find(); 
curs.forEach(showTypeCode); 
function showTypeCode(cur) { 
    print(cur.type + '-' + typeof(cur.type)); 
}; 

結果:

1-number 
a-string 
1,2,3,4-object (this is an array, it's 4 in mongo) 

這裏是我的問題,我怎樣才能在蒙戈數組類型代碼外殼

+0

這是一個已知的bug,MongoDB實際上將一個數組作爲一個對象讀取。 – Sammaye

+0

這裏是它的JIRA:https://jira.mongodb.org/browse/SERVER-1475 – Sammaye

+0

@ Sammaye,我不應該使用這個演示,在javascript []和{}都是對象類型。我想要得到mongo數據類型4.是否有任何方法可以顯示這種類型的代碼?:) – sashimi

回答

1

你的第一個查詢:

db.foo.find({type: {$type: 4}}); 

實際上並不會因工作中的錯誤。這是MongoDB中的一個已知錯誤,在使用$type運算符時,它將數組作爲對象讀取。您可以投票,把你的支持,這JIRA:https://jira.mongodb.org/browse/SERVER-1475

作爲解決與JS的問題,這個問題可能會幫上你:Detect if parameter passed is an array? Javascript

數組是Array類的對象,所以這就是爲什麼你會得到回報。如果你測試一個Array的實例,那麼它應該可以工作。

+0

thx〜monogodb非常活潑。 – sashimi