社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  MongoDB

如何在mongodb中保留方法直到数组有2个元素

vinaykumar0459 • 5 年前 • 564 次点击  

我想保持这个方法,直到数组有两个或更多使用nodejs和mongodb的元素。。

exports.Arrayelements = function(req, res) {
    var elementName = req.body.elementName;
    connection.arrayelements.updateMany({}, { $push: { sampleArray: [elementName] } }, { upsert: true });
    connection.arrayelements.find({}, function(err, docs) {
        if(err) throw err;
        if(docs[0].elementName.length >= 2) {
            // call this function
        } else {
            // want to call back again to push syntax until 2 or more elements in array
        }
    });
}
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49225
 
564 次点击  
文章 [ 1 ]  |  最新文章 5 年前
Alex Blex
Reply   •   1 楼
Alex Blex    6 年前

首先 find 返回一个光标,如果您只需要第一个文档(docs[0]),则 connection.arrayelements.findOne({}) connection.arrayelements.find({}).next() .

下一个问题是 updateMany next 接受回扣或退回承诺您没有在代码片段中使用updateMany返回的承诺,这是一个错误您的find语句可能在更新发生之前返回结果,具体取决于竞赛条件。

最后,使用setInterval是不明智的如果你需要重复 updateMany 循环中的语句,直到find的结果与您的条件匹配为止—只需执行它使用async/await语法非常简单:

exports.Arrayelements = async function(req, res) {
    const elementName = req.body.elementName;
    do {
        await connection.arrayelements.updateMany({}, { $push: { sampleArray: [elementName] } }, { upsert: true });
        const doc = await connection.arrayelements.findOne({});
    } while(doc.elementName.length >= 2);
    // call this function
}