5

単一の検索仕様を使用してDBRefを介してクエリを実行することは可能ですか?

ユーザーコレクション

{
    'age': 30
}

投稿コレクション

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

1回の検索ステップでユーザーが30歳のすべての投稿をクエリすることはできますか?そうでない場合は、多段階操作を処理するJavaScript関数を作成するのが賢明ですか、それともブロッキングの問題が発生しますか?

4

3 に答える 3

6

それは不可能です。私はどちらかをお勧めします:

a)すべてのデータが単一のドキュメントに含まれるようにデータモデルを変更する(場合によっては不可能な場合があります)。

b)最初に30歳のユーザーをクエリし、次に2番目のクエリを実行して、ユーザーがそのリストの$である投稿を取得します。サーバーサイドのJSなどを使用するのではなく、このクライアントサイドを使用します。

于 2010-05-19T17:57:35.873 に答える
1

私はPythonドライバーを使用しているので、それほどmongodbではない構文を許してください。

users = list(db.Users.find({'Age':30}))
posts = list(db.Posts.find({'User':{'$in':users}}))
于 2012-10-11T04:57:11.610 に答える
0

pythonbsonパッケージをインストールします。例として試してください。

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)}))
于 2014-04-16T07:43:08.143 に答える