我怎樣才能添加新文檔到子文件陣列上的MongoDB與Java?如何添加文件到子文件陣列 - 的Java/MongoDB的
對於爲例,附加{tweetId:456}到的文檔 「鳴叫」 的數組:
{
day : 20170209,
hours : {
hour : 20,
tweets : {tweetId : 123 }
}
}
期望的結果:
{
day : 20170209,
hours : [ {hour : 20,
tweets : [{tweetId : 123},{tweetId : 456}]},
{hour : 21,
tweets : [{tweetId : 567},{tweetId : 890}]}
]
}
UPDATE
對不起,我沒有沒有正確解釋,tweets文檔是一個tweetsId數組。我修正了上面的例子以更好地理解。
例如,與只用2級的集合:
{
"_id":{
"$oid":"589c5a1047e9062f004b84a3"
},
"hashtag":"BRASIL",
"tweets":[
{
"tweetId":"829661297121845249"
},
{
"tweetId":"829661278352269313"
}
]
}
我可以追加新的TweetId此陣列:
collection.updateOne(new Document("hashtag", hashtag),
new Document("$push", new Document("tweets", new Document("tweetId", tweetId))));
但是,當陣列是在第3級(小時>鳴叫> TweetId),我無法找到正確的方法。
希望現在是更好的解釋。
我想你正試圖實現在蒙戈時間系列,在[在MongoDB中實現時間序列](https://dzone.com/articles/implementing-time-series-in-mongodb)中進行了解釋。但是,這不是正確的方法。如果您不希望數據庫開始將文檔移動到內存中,則文檔應該長度固定。然後,不要使用數組。 –
嗨,Riccardo。其實我試圖按小時整理推文。 –
您確定正確的文檔模式是您正在使用的模式嗎?我的意思是,對於一個* hashtag *,你可以擁有百萬條推文,而不是單個陣列中的腳。請記住,文檔在MongoDB中具有最大大小。我建議你每個推文都有一個文檔,並帶有一個標籤列表。然後,使用聚合框架與他們正常工作。 –