2014-03-06 76 views
0

我試圖使用全搜索http://docs.mongodb.org/manual/tutorial/search-for-text/異常:BSONObj大小:-286331154(0xEEEEEEEE)無效。大小必須在0到16793600(16MB)

db ['Item']. runCommand ('text', {search: 'deep voice', language: 'english'}) 

它工作得很好

,但是當我添加條件

db['Item'].runCommand('text', { search: 'deep voice' , language: 'english' , filter: {"and":[{"_extendedBy":{"in":["Voiceover"]}},{"and":[{"or":[{"removed":null},{"removed":{"\(exists":false}}]},{"category":ObjectId("51bc464ab012269e23278d55")},{"active":true},{"visible":true}]}]} }) 

我收到之間一個錯誤

{ 

    "queryDebugString" : "deep|voic||||||", 

    "language" : "english", 

    "errmsg" : "exception: BSONObj size: -286331154 (0xEEEEEEEE) is invalid. Size must be between 0 and 16793600(16MB) First element: _extendedBy: \"Voiceover\"", 
    "code" : 10334, 

    "ok" : 0 

} 

刪除w ORD 「聲音」

db['Item'].runCommand('text', { search: 'deep' , language: 'english' , filter: {"\)and":[{"_extendedBy":{"in":["Voiceover"]}},{"and":[{"or":[{"removed":null},{"removed":{"exists":false}}]},{"category":ObjectId("51bc464ab012269e23278d55")},{"active":true},{"visible":true}]}]} }); 

收到

響應請求...... ......

],

"stats" : { 

    "nscanned" : 87, 

    "nscannedObjects" : 87, 

    "n" : 18, 

    "nfound" : 18, 

    "timeMicros" : 1013 

}, 

"ok" : 1 

} 

不明白爲什麼發生錯誤?

數據庫並不大 「storageSize」:2793472,

db.Item.stats()

{

"ns" : "internetjock.Item", 

    "count" : 616, 

    "size" : 2035840, 

    "avgObjSize" : 3304.935064935065, 

    "storageSize" : 2793472, 

    "numExtents" : 5, 

    "nindexes" : 12, 

    "lastExtentSize" : 2097152, 

    "paddingFactor" : 1.0000000000001221, 

    "systemFlags" : 0, 

    "userFlags" : 1, 

    "totalIndexSize" : 7440160, 

    "indexSizes" : { 

      "_id_" : 24528, 

      "modlrHff22a60ae822e1e68ba919bbedcb8957d5c5d10f" : 40880, 

      "modlrH6f786b134a46c37db715aa2c831cfbe1fadb9d1d" : 40880, 

      "modlrI467f6180af484be29ee9258920fc4837992c825e" : 24528, 

      "modlrI5cb302f507b9d0409921ac0c51f7d9fc4fd5d2ee" : 40880, 

      "modlrI6393f31b5b6b4b2cd9517391dabf5db6d6dd3c28" : 8176, 

      "modlrI1c5cbf0ce48258a5a39c1ac54a1c1a038ebe1027" : 32704, 

      "modlrH6e623929cc3867746630bae4572b9dbe5bd3b9f7" : 40880, 

      "modlrH72ea9b08fd832ef9459d868800ce87cb" : 40880, 

      "modlrU821e16c04f9069f8d0b705d78d8f666a007c274d" : 24528, 

      "modlrT88fc09e54b17679b0028556344b50c9fe169bdb5" : 7080416, 

      "modlrIefa804b72cc346d66957110e286839a3f42793ef" : 40880 

    }, 

    "ok" : 1 

}

+0

您說的粘貼的查詢出現錯誤,然後您說您剛剛刪除了「聲音」一詞並不相同。這只是一個錯誤嗎?或者你真的在運行兩個完全不同的查詢。看看你發佈和比較它們,減去單詞「語音」 – user602525

回答

2

結果文件返回第一個查詢顯然大於16MB。 MongoDB的最大文檔大小爲16MB。第二個查詢返回的文檔小於16MB,因此沒有錯誤。

這是沒有辦法的。這裏的鏈接到文件:

http://docs.mongodb.org/manual/reference/limits/

+0

數據庫是不是大「大小」:2035840,(〜2MByte) ,我不能超過16 MB在查詢 – user3386247

1

重新創建文本索引,然後一切正常:-)

db.Item.dropIndex( 'modlrT88fc09e54b17679b0028556344b50c9fe169bdb5');

db.Item.ensureIndex({ '關鍵字': '文本'},{ '名': 'modlrT88fc09e54b17679b0028556344b50c9fe169bdb5'})

db.Item.stats()

...

「modlrT88fc09e54b17679b0028556344b50c9fe169bdb5」:7080416,//

...

「modlrT88fc09e54b17679b0028556344b50c9fe169bdb5」 前:2518208 //後重建文本索引

+0

這也適用於我。 – claymation

7

我用mongo 3.0.0和3.1.9用相對較小的數據庫(12GB)也有同樣的問題。

在這浪費約4個小時的時間後,我發現解決方法使用其中編號取決於您的數據的性質變化隱藏參數

mongorestore --batchSize=10 

。從1000開始。

相關問題