В чем разница между аннотациями и обычными поисками с использованием JSONField от Django?

До 3.2.6 Mongodb не поддерживает запрос соединения как mysql. ниже решения, которое работает для вас.

 db.getCollection('comments').aggregate([
        {$match : {pid : 444}},
        {$lookup: {from: "users",localField: "uid",foreignField: "uid",as: "userData"}},
   ])
1
задан darkhorse 17 March 2019 в 19:21
поделиться

2 ответа

Нет никакой причины использовать необработанный SQL для запросов, где вы можете использовать синтаксис ORM. Для тех, кто хорошо знаком с SQL, но менее знаком с ORM Джанго, RawSQL может обеспечить более простой путь к определенному результату, чем ORM, который имеет свою собственную кривую обучения.

Могут быть более сложные запросы, когда ORM сталкивается с проблемами или где может не дать вам точный запрос SQL, который вам нужен. Именно в этих случаях пригодится RawSQL - хотя ORM становится более полным с каждой итерацией, с

  • Cast (с 1.10),
  • [ 118] Window функции (начиная с 2.0),
  • постоянно растущий массив упаковщиков для функций базы данных
  • возможность определения пользовательских оболочек для функций базы данных с Func выражения (начиная с 1.8) и т. д.
0
ответ дан Endre Both 17 March 2019 в 19:21
поделиться

Они взаимозаменяемы, так что дело вкуса. Я думаю, что Document.objects.filter(data__name='Foo') лучше, потому что:

  • Легче читать
  • В будущем MariaDB или MySql могут поддерживать поля JSON, и ваш код сможет работать как на PostgreSQL. и MariaDB.
  • Не используйте RawSQL как общее правило. Вы можете создать дыры в безопасности в своем приложении.
0
ответ дан jozo 17 March 2019 в 19:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: