Вопрос

Можно ли сделать запрос через DBRef с использованием одной спецификации поиска?

коллекция пользователей

{
    'age': 30
}

коллекция постов

{
    'user': DBRef('user', ...)
}

Можно ли за один шаг поиска запросить все сообщения, число пользователей которых составляет 30 лет?Если нет, то было бы разумно создать функцию javascript для обработки многоэтапной операции или это вызовет проблемы с блокировкой?

Это было полезно?

Решение

это невозможно сделать.я бы порекомендовал либо:

а) изменение модели данных так, чтобы все данные находились в одном документе (в зависимости от вашего случая это может быть невозможно).

б) сначала запрос пользователей, которым исполнилось 30 лет, а затем выполнение второго запроса, чтобы получить сообщения, в которых пользователь находится в этом списке.я бы сделал это на стороне клиента, а не использовал JS на стороне сервера или что-то в этом роде.

Другие советы

Я использую драйвер Python, так что простите мой не совсем mongodb-синтаксис:

users = list(db.Users.find({'Age':30}))
posts = list(db.Posts.find({'User':{'$in':users}}))

Установить питон Бсон упаковка.и попробуйте на примере.

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)}))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top