Come interrogare attraverso una DBRef in MongoDB / pymongo?
Domanda
E 'possibile interrogare a un DBRef utilizzando un unico spec ritrovamento?
raccolta utente
{
'age': 30
}
Collection Post
{
'user': DBRef('user', ...)
}
E 'possibile eseguire una query per tutti Inserisci chi è gli utenti sono 30 in un unico passaggio ritrovamento? In caso contrario, sarebbe saggio creare una funzione javascript per gestire l'operazione a più stadi o sarà che causano problemi di blocco?
Soluzione
non è possibile farlo. mi sento di raccomandare uno:
a) cambiare il modello di dati in modo che tutti i dati sono in un unico documento (potrebbe non essere possibile a seconda del caso).
b) l'esecuzione di query per gli utenti che sono 30, e poi fare una seconda query per ottenere i messaggi in cui l'utente è di $ in quella lista. Vorrei farlo lato client piuttosto che utilizzare lato server JS o qualcosa di simile.
Altri suggerimenti
Io uso un driver Python, quindi perdona la mia sintassi non-così-mongodb:
users = list(db.Users.find({'Age':30}))
posts = list(db.Posts.find({'User':{'$in':users}}))
Installa python BSON pacchetto. e provare come esempio.
import pymongo
from pymongo import MongoClient
from bson.dbref import DBRef
client = MongoClient('ip', 27017)
client.the_database.authenticate('user', 'password', source='db_name')
db = client['db_name']
user = db['user']
user_id = user.find_one({'email': 'xxxxx@gmail.com'}).get('_id')
client_user_relation = db['client_user_relation']
print(client_user_relation.find_one())
print(user_id)
print(DBRef(collection = "user", id = user_id))
print(client_user_relation.find_one({'user': DBRef(collection = "user", id = user_id)}))