【问题标题】:How To Concatenate MongoDB Queries如何连接 MongoDB 查询
【发布时间】:2014-10-05 15:45:35
【问题描述】:

我在mongodb 中使用find()mongoskin

我正在尝试获取两个集合。

/* GET drawingList */
router.get('/drawinglist', function(req, res) {
    var db = req.db;
    db.collection('drawingList').find().toArray(function (err, items) {
        res.json(items);
    });
});

// GET drawingQty
router.get('/drawinglist', function(req, res) {
    var db = req.db;
    db.collection('drawingQty').find().toArray(function (err, items) {
        res.json(items);
    });
});

我尝试像这样将它们合并在一起,

router.get('/drawinglist', function(req, res) {
    var db = req.db;
        db.collection('drawingList').find().toArray(function (err, items) 
            db.collection('drawingQty').find().toArray(function (err, items)  {
                res.json(items);
    });
});

但程序不会运行。 连接它的正确方法是什么?

【问题讨论】:

  • 您能详细说明您要达到的目标吗?你想发送两个结果吗?
  • 我正在查找结果并将其作为 json 推送到数组中。根据我的阅读,最好只进行两个单独的查询。我做到了。

标签: node.js node-mongodb-native mongoskin


【解决方案1】:

这更像是一个 JavaScript 问题而不是 mongoDB 问题。在您的示例中,只会返回第二个查询的结果,因为您在两个回调中使用了相同的 items 变量。第二个会覆盖第一个。

这应该给你一个提示,做什么:

router.get( '/drawinglist', function( req, res ) {
    var db = req.db;
    db.collection( 'drawingList' ).find().toArray( function( err, items ) {
        db.collection( 'drawingQty' ).find().toArray( function( err, items2 )  {
            var items3 = items.concat( items2 ); // or however you want to "merge"
            res.json( items3 );
        });
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-02
    • 2016-04-25
    • 2015-10-15
    • 1970-01-01
    相关资源
    最近更新 更多