无法限制在 mongojs nodejs 中工作

Posted

技术标签:

【中文标题】无法限制在 mongojs nodejs 中工作【英文标题】:Can't get limit to work in mongojs nodejs 【发布时间】:2017-10-22 04:57:36 【问题描述】:

我的代码只有在我删除限制函数时才有效,我做错了什么?

var db = mongojs('yansite', ['yansite']);
(function () 
    var bulk = db.ips.initializeOrderedBulkOp();
    bulk.find().limit(2).remove();
    bulk.execute(function (err, res) 
        console.log('Done!')
    );
)();

错误是:

TypeError: bulk.find(...).limit 不是函数 在 D:\nodeprojects\mysite\server.js:281:19 在对象。 (D:\nodeprojects\mysite\server.js:285:3) 在 Module._compile (module.js:570:32) 在 Object.Module._extensions..js (module.js:579:10) 在 Module.load (module.js:487:32) 在 tryModuleLoad (module.js:446:12) 在 Function.Module._load (module.js:438:3) 在 Module.runMain (module.js:604:10) 运行时(bootstrap_node.js:390:7) 启动时 (bootstrap_node.js:150:9)

在 mongojs github README 中显示了这个例子:

db.mycollection.find().limit(2).skip(1, function (err, docs) ... )

【问题讨论】:

limit 不能与remove 一起使用。可能是***.com/questions/19065615/… 我只是尝试不使用批量并找到限制是否工作必须是批量不的一种方式?,我看到该解决方案我只是不知道它在返回的地方是如何工作的,所以我可以删除? , removeIdsArray 里面没有设置 find limit 工作,当然,但不是 remove。 需要删除 【参考方案1】:

我做到了,但有点丑,我希望有办法,很难相信没有

(function () 
    db.usersChatMessages.find().limit(2, function (err, doc) 
        console.log('Done!');
        var docIds = [];
        for (var i=0; i < doc.length; i++) 
            docIds.push(doc[i]._id);
        
        db.usersChatMessages.remove(_id: $exists: true, $in: docIds, function (err, doc) 
            console.log('removed!');
        );
    );
)();

【讨论】:

以上是关于无法限制在 mongojs nodejs 中工作的主要内容,如果未能解决你的问题,请参考以下文章

工作线程如何在Nodejs中工作?

MongoJS 节点 findOne 错误地返回无结果

如何使用 mongojs 遍历整个 MongoDB 集合?

断言(req.assert)如何在nodejs中工作

如何让 ipywidgets 在 Jupyter Lab 中工作?

mongo存储的javascript是nodejs中多个数据库插入的好解决方案