如何在php中查询mongo?
所以我有这个简单的登录功能,它尝试将电子邮件地址与数据库中的密码进行匹配,并将其与用户通过表单输入的数据进行比较。
function login($email, $password){
$m = new Mongo("localhost");
$m->connect();
$db = $m->users;
$collection = $db->test_collection;
echo "<pre>";
var_dump($collection->findOne(array('name' => 'john'))); //returns correctly
var_dump($collection->find(array('name' => 'john'))); //returns mongo cursor object
echo "</pre>";
}
我不明白为什么 find() 只返回一个游标对象。答案?
这是 mongo 文档
array(5) {
["_id"]=>
object(MongoId)#22 (1) {
["$id"]=>"4d7eaa848baf84d32b000000"
}
["activated"]=> (true)
["email"]=> "[email protected]"
["name"]=> "john"
["password"]=> "334c4a4c42fdb79d7ebc3e73b517e6f8"
}
我将如何执行“WHERE”查询来在同一文档中找到电子邮件和密码?显然,我没有为 find() 和 findOne() 查询提供正确的参数。 PHP 中正确的语法是什么?
So I've got this simple login function that is trying to match email address with a password in the database and compare it with the user entered data via form.
function login($email, $password){
$m = new Mongo("localhost");
$m->connect();
$db = $m->users;
$collection = $db->test_collection;
echo "<pre>";
var_dump($collection->findOne(array('name' => 'john'))); //returns correctly
var_dump($collection->find(array('name' => 'john'))); //returns mongo cursor object
echo "</pre>";
}
I don't understand why the find() only returns a cursor object. Answers?
This is the mongo document
array(5) {
["_id"]=>
object(MongoId)#22 (1) {
["$id"]=>"4d7eaa848baf84d32b000000"
}
["activated"]=> (true)
["email"]=> "[email protected]"
["name"]=> "john"
["password"]=> "334c4a4c42fdb79d7ebc3e73b517e6f8"
}
How would I do a "WHERE" query that would find both email and password in the same document? I'm obviously not getting the paramaters correct for the find() and findOne() queries. What is the correct syntax in PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
find
应该返回一个光标 - 您可以在这里阅读有关它们的更多信息:http://www.mongodb.org/display/DOCS/Queries+and+Cursors 。要从光标获取文档,您必须对其进行迭代。
就您而言,
findOne
可能就是您所追求的,因为您不希望多个用户具有相同的用户名和密码。 findOne 函数始终最多返回一个文档,因此不需要游标。要在查询中包含多个谓词,只需向查询数组中添加更多字段即可:(
如果这是正确的 PHP - 我的 PHP 有点生疏)
find
is supposed to return a cursor - you can read more about them here: http://www.mongodb.org/display/DOCS/Queries+and+Cursors .To get the documents from the cursor, you will have to iterate over it.
In your case,
findOne
is probably what you are after since you don't expect multiple users with the same username and password. The findOne function always returns at most one document, so there is no need for a cursor.To have multiple predicates in your queries, just add more fields to your query array:
(If that is correct PHP - my PHP is a bit rusty)
尝试
try