mongodb

时间:2016-02-12 07:45:50

标签: arrays mongodb indexing reverse

我是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查询?

1 个答案:

答案 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'}}}])