gpt4 book ai didi

php - 从mysql逆向到mongodb最合适的方法

转载 作者:行者123 更新时间:2023-11-30 23:10:22 25 4
gpt4 key购买 nike

在mysql中我们写,

SELECT * 
FROM Student , Course
WHERE Student.course_id = Course.id
AND Course.name = "English"

我们可以在 mongodb 中做与(在 PHP 中)相同的事情

$m = new MongoClient();
$db = $m->selectDB('test');
$collection1 = new MongoCollection($db, 'Course');
$cursor = $collection1->find(array("name"=>"English"));

$collection2 = new MongoCollection($db, 'Student');


foreach($cursor as $res) {
$cursor = $collection2->find(array("course_id"=>array($in=>$res['id'])));
//do something with the result
}

或者还有另一种使用预连接或嵌入集合的方法,如下所示。

$m = new MongoClient();
$db = $m->selectDB('test');
$collection1 = new MongoCollection($db, 'Student');
$cursor = $collection1->find(array("name"=>"Course.English"));

//do something with result

嵌入如下

Student=>array(

id=>...,

Course=>[]

)

1).我对什么是最好的解决方案感到困惑。2).在一个项目中多次单独使用两个集合时,什么是最好的。

最佳答案

由于经常使用两个集合,嵌入两个集合会导致操作变慢。 (单独访问集合中的数据。)所以在这里可以使用以下代码。

$m = new MongoClient();
$db = $m->selectDB('test');
$collection1 = new MongoCollection($db, 'Course');
$cursor = $collection1->find(array("name"=>"English"));

$collection2 = new MongoCollection($db, 'Student');


foreach($cursor as $res) {

$cursor = $collection2->find(array("course_id"=>array($in=>$res['id'])));
//do something with the result
}

in here if you need to retrive data from collection2,

$resArr = array();
foreach($cursor as $res) {

array_push($resArr ,$res['id']);

}

$cursor2 = $collection2->find(array("course_id"=>array($in=>$resArr)));


foreach($cursor2 as $res2) {

//do something with the result
}

关于php - 从mysql逆向到mongodb最合适的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20054128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com