2 回答

TA贡献1815条经验 获得超13个赞
这个结构不太合理,内嵌数组太多,你提到的查询是可以搞的,但比较复杂,得灵活使用$unwind
用nosql,个人的建议是可以适当冗余,然后数据结构尽量平坦,这样查询效率较高,如果是我设计,就采用下面很平坦的做法:
{
"userId":FFFFFF
"eventId:FFFFFF_18898981
"messageId":1,
"messageStatus":1,
"outTime":3000
},
虽然冗余了userId和eventId在多条记录里,但是查询和索引都很好能,等于以空间换时间。适合放数组里面的最好是很简单的结构,诸如标签这种纯字符串数组

TA贡献1829条经验 获得超13个赞
依次回答你的问题:
1.结构不合理。我们再构造JSON数据的时候,原则上不要嵌套多层,如果能嵌套多层的数据结构,其实是可以对java bean数据结构本身再进行抽象的,而且多层嵌套,在fastjson中。阿里巴巴的fastjson是不支持两层嵌套的,多层嵌套的获取数据要自己写方法来取值,非常不利于开发。
2.查询和删除都要取值判断,代码如下:
定义一个java bean 属性:String id, String userId List<Event> events;
Event events = (Event)JSON.toJavaObject(json, Event.class);
然后你依次获取来比,[]是数组,里面存多个对象.{}中存放的是对象。
添加回答
举报