2016-02-12 3 views
2

Я новичок в mongodb.I есть этот тип структуры коллекции.таблица с обратным индексом в 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

Я думаю, вы должны понимать, что в вашем документе пользователь * и l * очень разные объекты. Поскольку Mongo хранит документы JSON, пользователь является ключом, а l * - значением. Я считаю, что нет способа конвертировать один в другой, используя только запрос Mongo. Если вам нужна именно эта схема документа, вы должны использовать какое-либо приложение для загрузки данных из Mongo и продолжить его. Вы можете использовать Java Script в Mongo Console как самый простой способ. Другой было это изменить схему

{'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'}}}]) 
Смежные вопросы