import mongoengine
class MyLog(mongoengine.EmbeddedDocument):
text = mongoengine.StringField()
class Server(mongoengine.DynamicDocument):
name = mongoengine.StringField()
status = mongoengine.StringField()
text_list = mongoengine.ListField(mongoengine.EmbeddedDocumentField(MyLog))
Server.objects.all()
クエリセットは、デフォルトではtext_list
フィールドの値が含まれていません。 私はthis-を行うにしました(クエリセット内の各オブジェクトのためにtext_list
フィールドの値を取得する。mongoengineフィルタクエリ埋め込まれた文書を検索
for s in Server.objects.all():
print s.text_list
を私の場合/シナリオでは、私はこれを行うことはできません、私は内のすべてのデータを取得する必要があります意味しますモンゴシェルに例えばさらに
ために自分自身をクエリセット(または他の言葉で、私はobj.text_list
を使用せずにも私にすべてのネストされた詳細を与えるクエリセットを持っている必要があります)
- db.server.find()
が埋め込まれたすべてのネストされたが含まドキュメント。
{
'_id': ObjectId("272742942qbe5451b4f4b9e7"),
'name':'nm',
'status': 'st',
'text_list': [
{# here it's including embedded model's info too, no need to make extra query, looking for similar query in mongoengine orm
'text': 'done'
}
]
}
ormまたはraw_queryを使用してmongoengineでこれを行う方法を教えてください。
私はto_json()
方法
json.loads(queryset.to_json())
Server.objects.all().to_json()
を使用してmongoengineのORMでこの問題を解決することができますが、埋め込まれたモデルの情報を含むが、何百万もの文書にページネーションを使用した場合、これは効率的ではない結果を返す、私はそれで意味しますcase mongoはすべてのオブジェクトをto_jsonに変換しようとします。
質問を明確にしてください。最初に結果が含まれていないと言って、インスタンス属性を使用して結果にアクセスできると言っています。 – lesingerouge
@lesingerouge:更新された質問の詳細。 – Wendy
@lesingerougeと同様に、あなたが望むものは不明です。クエリセットは、インスタンス属性としてアクセスできる埋め込みフィールドを持つドキュメントを返します。ほかに何か? –