0

我读了这篇文章,看到了如何在 mongodb 中搜索记录的名字:

http://docs.mongodb.org/manual/reference/sql-comparison/

db.users.find({ firstname: /^bc/ });

但是鉴于我的字符串有两个单词(即名字和姓氏),我如何搜索名字和姓氏。

在 MySQL 中,我正在使用:

SELECT * FROM profiles WHERE match(firstname, lastname) AGAINST ('".$data."');

其中数据包含“迈克汤普森”。

4

2 回答 2

0
db.users.find({
    first_name: /^first/,
    last_name:  /^last/
})

这意味着匹配 first_name 等于 first 并且 last_name 等于 last 的文档。

于 2013-05-24T12:00:36.767 回答
0

这是我的标准用法。

它使用 $or 运算符。

var query = req.query.query,
    queryArr = query.split(' '),
    first_name,
    last_name;
// Check if it is split into a first and last name
if (queryArr.length === 2) {
    //create regex for first and last name
    first_name = new RegExp(queryArr[0], 'i');
    last_name = new RegExp(queryArr[1], 'i');
}
query = new RegExp(query, 'i');
var dbQuery = {
    // Searches first_name or last_name
    $or: [
        {
            // Searches first name based on whole query or first_name query
            $or: [
                    {
                    first_name: query
                },
                {
                    first_name: first_name
                }
            ]
        },
        {
            // Searches last_name based on whole query or last_name query
            $or: [
                {
                    last_name: query
                },
                {
                    last_name: last_name
                }
            ]
        }
    ]
};
db.users.find(dbQuery, function (error, response) {
    res.send(200, {
        success: true,
        body: response
    });
});
于 2014-09-28T07:38:11.203 回答