我怎样才能添加新文档到子文件阵列上的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中具有最大大小。我建议你每个推文都有一个文档,并带有一个标签列表。然后,使用聚合框架与他们正常工作。 –