2012-06-08 30 views
0

Mongo使用日期作爲關鍵字的數組?Mongo DB以日期爲關鍵字創建一個數組?

[_id] => MongoId Object (
    [$id] => 4fcf2f2313cfcd225700000d 
) 
[id] => 14 
[name] => Aryan Roban 
[news] => Array (
    [08-06-2012] => 12 
) 

這裏我想要一個新聞作爲數組與日期作爲關鍵和如何刪除特定的關鍵行?

例如

我想刪除數組元素與關鍵'08 -06-2012' 新聞陣,我不知道它的價值。

+0

是沒有日期,而一個字符串?這裏是一個可能的解決方法:http://stackoverflow.com/questions/4588303/in-mongodb-how-do-you-remove-an-array-element-by-its-index – YMMD

+0

日期本身..無論日期( 'dm-Y')還是日期('Ym-d') –

回答

0

尋找文件不會是一個問題,這很容易。簡單地看,如果news已得到符合你的搜索條件的關鍵:

db.foo.find({'news.08-06-2012': {'$exists': true}}) 

不要忘了把一個指數news

但刪除它們並不容易。還有另外一個顯示線程的線程,但它確實是一個解決方法:In mongoDb, how do you remove an array element by its index不幸的是,這隻適用於具有數字索引的數組,而不適用於關聯數組。

也許你可以使用自己的收藏新聞?然後,您可以輕鬆更新和刪除它們。否則,你可以從你的數據庫中加載一個完整的文檔,在你的應用程序中處理新聞,然後保存。這將需要兩個數據庫查詢,但應該工作。

+0

今天是否可以創建數組「news.08-06-2012」,明天我想添加「news.09-06-2012」到同一條新聞陣列。即每天更新新聞數組,但不重置整個新聞數組...我使用'$ set',但它正在重置整個新聞數組 –

+0

使用'$ set'添加新聞是可能的:'db.foo.update {/*...*/},{$ set:{'news.09-06-2012','whatever'}})'(http://www.mongodb.org/display/DOCS/Updating#Updating - %24set)但是你不能輕易地刪除這些項目。 – YMMD

+0

如果'db.foo.update({/*...*/},{$ inc:{'news.11-06-2012',1}})',新聞數組是否會創建一個新的數組元素爲數數?即'[11-06-2012] => 1'到現有數組 –

0

我們可以像使用

db.foo.update({/*...*/}, {$unset: {'news.11-06-2012', 1}})