我是mongodb的新手。我有这种类型的收集结构。
{
"user1":["l1","l2","l3","l4","l5"]
"user2":["l2","l3",l4","l7"]
"user3":["l7,"l5"]
}
所以我想把这个集合转换成反向索引形式
{
"l1":[user1]
"l2":[user1,user2]
"l3":[user1,user2]
"l4":[user1,user2]
"l5":[user1,user3]
"l7":[user2,user3]
}
如何编写同样的mongodb查询?
答案 0 :(得分:0)
我认为你应该明白,在你的文档中,用户*和l *是非常不同的实体。由于Mongo存储了JSON文档,因此user是一个键,l *是一个值。我相信没有办法只使用Mongo查询将一个转换为另一个。如果您需要使用这个文档方案,您应该使用一些应用程序从Mongo下载数据并继续它。您可以在Mongo Console中使用Java Script作为最简单的方法。 另一个是将计划改为
{'name':'user1', 'l':['l1','l2','l3','l4','l5']}
{'name':'user2', 'l':['l2','l3','l4','l7']}
{'name':'user3', 'l':['l7','l5']}
然后使用聚合框架
db.users.aggregate([{$unwind:'$l'},{$group:{_id:'$l',users:{$push:'$name'}}}])