php - 如何在 MongoDB 中交叉引用数据

标签 php mongodb mongodb-php

我正在尝试使用 PHP 和 MongoDB 制作我的第一个应用程序。

我想要制作的是给定区域的果树列表,而且我还想要一个区域可以种植的果树列表。

我来自 MySQL 背景,所以如果在 sql 中,我会有一个树表,其中包含有关树的信息。比起我会有一张实际树木的表格,它会在 ID 上与树木表格相连,并且还有位置和其他信息。

但是在 Mongo 中,我不确定这是如何完成的,或者应该如何完成。

Baiscally want 我想要的是一个树的列表,用户可以引用自己的树。

任何关于这将如何伟大的帮助或指导。

$db->trees->fruittrees
$db->tress->userstrees 

克里斯

最佳答案

但是您的问题中缺少很多东西:

What I am trying to make is a listing of Fruit trees in a given area, and Also I want to have a list of fruit trees that could be grown in an area.

闻起来像地理空间查询:http://docs.mongodb.org/manual/core/geospatial-indexes/ .

所以用户会有一个位置:

{
    name: 'sammaye',
    location: [107,206]
}

每棵生长的树都可以利用一系列区域:

{
    name: 'apple tree'
    locations_of_growth: [[74,59],[67,-45]]
}

你只需做一个 $near查询与地球距离相当的用户 (http://docs.mongodb.org/manual/core/geospatial-indexes/#distance-calculation),以计算该用户附近有哪些树木。

关于地理空间查询的事情是,它们也可能受到更多信息的限制,所以假设您想让用户比较该地区苹果树的叶子颜色,以了解该地区有多少苹果树有绿叶,您可以简单地将其作为条件添加到树文档中并将其添加到您的 $near .

地理空间查询有一个缺点,那就是每个集合只能有一个索引 (http://docs.mongodb.org/manual/core/geospatial-indexes/#create-a-geospatial-index),所以这意味着如果您还希望提供可以在该地区种植的树木列表,那么你可能需要两个集合,一个叫做 other_trees还有一个叫growable_species .当您希望允许用户将他们的树与您查询区域中的其他树进行比较时 other_trees当您希望允许用户查看该地区可以种植哪些树木时,您可以查询 growable_trees .

这当然只是其中一种方式。

编辑

我不会“推荐”使用 Doctrine,这取决于您,并且取决于您的场景。 Doctrine 是一个非常繁重且非常慢的 ORM,并且有很多更快更轻量级的 PHP ORM:http://docs.mongodb.org/ecosystem/drivers/php-libraries/如果您想使用 ORM,也就是说,也许您有一个完整的堆栈框架,或者您想单独使用驱动程序。

此外,MongoDB 不需要 JSON PHP(无论如何)处理知识。来自 MongoDB 的所有结果作为 BSON 进入驱动程序,然后反序列化为 PHP 中的标准字典,即关联数组。您在这里不需要 JSON PHP 处理知识。

另外,与其他答案不同的是,要非常小心“将所有信息存储在一个 JSON 文档中”,即因为 MongoDB 是 BSON 而不是 JSON,而且还因为应该非常仔细地考虑嵌入,并且应该根据它是否适合您的需求来判断场景与否。事实上,您会发现嵌入的内容不只是 _id。 s 在大多数情况下到其他行可能会导致问题,但正如我所说,它取决于场景。

关于php - 如何在 MongoDB 中交叉引用数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14949097/

相关文章:

mongodb - pyspark-mongodb 集合读取命令不会执行

php - 在没有 ACID 数据库的情况下处理 session ?

php - 从 php 获取数据到 datetime-local

php - 我在我的 php 脚本中找不到错误

java - 蒙戈 : count number of array elements for each entry in collection

php - mongodb php获取字段的唯一值

php - 更改 RockMongo 中的默认用户名/密码

php - wp_Query 重复帖子

php - 从字符串中获取最后 3 个单词?

node.js - 将 Joi 模式与 Mongoose 模式一起使用?