سؤال

هل من الممكن الاستعلام عبر 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