我如何使用 MongoDB 在 NodeJS 中编写以下 MySQL Select?

Posted

技术标签:

【中文标题】我如何使用 MongoDB 在 NodeJS 中编写以下 MySQL Select?【英文标题】:How can i write in NodeJS with MongoDB the following MySQL Select? 【发布时间】:2016-02-20 06:02:56 【问题描述】:

我想要什么:

SELECT MAX(pieces) //(to a var variable)
FROM record
WHERE ip = :ipAddress AND filename_full = :filename

:ipAddress 和文件名来自 http...感谢您的帮助

the db

我想使用的地方:

 mongoose.connect('mongodb://localhost:27017/newDB', function(err,db)
    if(!err)
        acl = new acl(new acl.mongodbBackend(mongoose.connection.db, 'acl_'));
        acl.allow('guest', 'business', 'view');

        console.log(acl);
        var cursor = db.collection('record').find(ip: ipAddress, filename_full: filename);
        cursor.each(function (err, doc) 
            assert.equal(err, null);
            if (doc != null) 
                console.dir(doc);
             else 
                console.log("Not found");
                callback();
            
        );*/

        
);

【问题讨论】:

推荐阅读:docs.mongodb.org/manual/reference/sql-comparison 原来如此:docs.mongodb.org/manual/reference/sql-aggregation-comparison 【参考方案1】:

您可以使用 Mongoose,它可以帮助您更轻松地使用 MongoDB。

Record.findOne(
    ip: ipAdress,
    filename_full: filename
).sort(
    'pieces': -1
).exec(function(err, doc) 

);

参考:Mongoose doc,Get max value in mongoose

【讨论】:

Record.find([ 'ip': ipAddress, 'filename_full': filename]) .sort('pieces':-1) .limit(1) .exec( function (err, recordFinal) if (err) res.send(err); console.log("PIECES: ",recordFinal.pieces); ); 但它给了我一个包含完整细节的对象,而不仅仅是碎片......我该怎么做,它只是给我碎片整数? 并写下recordFinal.pieces是未定义的 在此处使用findOne 而不是find,否则doc 是一个数组,而不是您要查找的单个文档。 感谢@JohnnyHK 的建议。

以上是关于我如何使用 MongoDB 在 NodeJS 中编写以下 MySQL Select?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用nodejs在mongodb中进行文本索引

如何使用 mongoose 和 NodeJs 在 Mongodb 的数组字段中插入数据

如何使用 Nodejs 在 MongoDB 中创建类似 %keyword% 的查询

如何使用 Id 使用 vuejs 编辑字段 mongodb、nodejs

如何在 docker-compose 上使用 nodejs 在 mongoDB 上设置身份验证?

如何使用 MongoDB 和 Nodejs 创建用户角色/权限?