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?

È stato utile?

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)}))
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top