简体   繁体   English

Node.js + mongoDB,mongojs $ in运算符出错

[英]Node.js + mongoDB, error with mongojs $in operator

I am running node.js with mongoDB with mongojs as driver. 我正在使用mongojs作为驱动程序的mongoDB运行node.js。 I have the following issue, 我有以下问题,

I try to query business collection with _id array, if I try to build the query dynamically as below, I get array with length 0 back which is wrong. 我尝试使用_id数组查询业务集合,如果尝试按以下方式动态构建查询,则会得到长度为0的数组,这是错误的。

 myFavoriteBusinessArray.forEach(function (iValue, j) {
            var temp = 'mongojs.ObjectId("' + iValue + '")';
            objectIdArray.push(temp);
        });
        var queryObject = {
            _id: {
                $in: objectIdArray
            }
        };
 db1.db.business.find(queryObject,
            function (err, business) {
                if (err) res.json(err);
                res.json(business);
            });
    }
    else {
        res.json({"login": "failed"});
    }

Where as If I try the following, then I am getting right array of 3 back. 如果我尝试以下操作,那么我将得到正确的3阵列。

db1.db.business.find({_id: { $in: [ mongojs.ObjectId("534fabb10648cd1c1b000002"), mongojs.ObjectId("52d664c15186ad103c000001"), mongojs.ObjectId("534ee1b4b51682bc30000002") ] }},
            function (err, business) {
                if (err) res.json(err);
                res.json(business);
            });

Could anyone please point me where I am going wrong? 有人可以指出我要去哪里了吗? Many thanks in advance. 提前谢谢了。

Regards, Chidan 此致,赤丹

You should replace: 您应该替换:

var temp = 'mongojs.ObjectId("' + iValue + '")';

by: 通过:

var temp = mongojs.ObjectId(iValue);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM