【问题标题】:Mongodb. Find documents by key from other collection蒙古数据库。从其他集合中按键查找文档
【发布时间】:2014-04-08 03:18:04
【问题描述】:

mongodb:

#Authors collection
db.authors.insert({name: 'Kobo', birthday: '1860', country: 'jp', tags: ['japan', 'avant-garde', 'screen', 'Akutagawa Prize']})
db.authors.insert({name: 'Sartr', birthday: '1905', country: 'fr', tags: [...]})
db.authors.insert({name: 'Braun', birthday: '1913', country: 'us', tags: [...]}
...

#Books collection
db.books.insert({title: 'book1', author: 'Kobo', year :''});
db.books.insert({title: 'book2', author: 'Sartr', year :''});
db.books.insert({title: 'book3', author: 'author', year :''});
...

Autor 标签会定期添加到 Authors 集合中。 本题不考虑使用图书标签。

需要找到作者有特定标签的所有书籍。比如“前卫”。 最有效的方法是什么? 在pymongo中怎么做?

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    MongoDB 不支持连接。因此,使用您拥有的数据模型,您必须将其分解为 2 个查询:

    1. 查询作者集合以获取具有特定标签的所有作者的列表
    2. 使用步骤 1 的结果查询图书收藏以获取图书列表

    如果您的数据是使用嵌入文档建模的,即,将 authors 嵌入到 books 中或以其他方式嵌入,您可以在一个查询中获得结果。

    【讨论】:

    • 作者将假设有 10000 和 1000 万本书。这是 mongodb 的工作情况,还是搜索将接近无穷大?据我了解,它将是 10000 次 10000000 或 100 000 000 000 比较操作
    • 不确定我是否正确理解了您的问题。如果您的应用程序主要访问或检索书籍,那么您应该考虑将作者嵌入书籍中,尽管作者将是多余的。我建议您阅读 MongoDB 的 data modeling concepts,因为它与 RDBMS 的建模完全不同。通过嵌入,您一开始就不需要加入。但是,如果您的用例使得嵌入不可行,但您必须进行大量连接,那么可能 MongoDB 不适合您的用例?
    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 2019-02-24
    • 2014-10-19
    • 2021-02-16
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    相关资源
    最近更新 更多