最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Node MongoDB批处理查找?

运维笔记admin16浏览0评论

Node MongoDB批处理查找?

Node MongoDB批处理查找?

我有一个函数,向它传递一个ID数组。我要做的基本上是检查是否有任何ID。

很遗憾,我不能执行以下操作,因为必须将.find()与其他操作一起使用。

是否可以批量查找?每个数组将包含100个ID,并且会有很多这样的查询,所以我宁愿不要一一对应。

try {
    const bulk = db.collection('designs').initializeUnorderedBulkOp();
    ids.forEach(a => {
        bulk.find({"items.meta.id": a})
    });
    const results = await bulk.execute();
    console.log(results)
} catch (e) {
    console.log(e)
}

为了清楚:

我使用Mongo作为我的Firebase数据的索引以允许搜索功能。每个设计文档都包含一个名为Items的数组,其中“ item”是一个包含关键项数据(例如ID,名称,平台)的对象,以及一个名为meta的对象。根据平台,该元对象包含不同的信息。

我需要做的是一次发送100个以上的ID,然后查询我的设计集合以查看是否在包含ID的Items数组中存在对象。

如果该ID存在于items.meta.id字段中,那么我只需要将该ID推送到一个新数组中,并在查询完所有100个ID之后,将作为响应返回的ID数组发送回去

编辑:

我现在有以下查询可以正常使用,但是在Node中执行此查询时,它仍返回整个文档

和我的代码

    const results = await collection.aggregate({
        $unwind:  '$items'
    }, {
        $match: {
            'items.meta.id': {
                $in: ids
            },
            'uid': uid
        }
    }, {
        $group: {
            '_id': '$items.meta.id'
        }
    }).toArray()

    console.log(results)

返回:

[ { _id: 5d9378a333247165d8ea6f22,
    id: 'OczQL9Blwx79ZXtJcgrV',
    name: 'Brewdolf',
    nameci: 'brewdolf',
    uid: '1uD82gAXORYsyimX5Dw23DDAimx1',
    selected_preview_image:
     'designs/1uD82gAXORYsyimX5Dw23DDAimx1/OczQL9Blwx79ZXtJcgrV/images/preview_BrewDolf.png',
    items:
     { active: true,
       id: 'Nz36jpTaJCjp3nsAqsXA',
       platform: 'a',
       price: '1645',
       title:
        'Brewdolph Funny Drinking Reindeer Christmas Craft Beer T-Shirt',
       meta: [Object] },
    tags: null } ]

我有一个函数,向它传递一个ID数组。我要做的实际上是检查是否有任何ID。不幸的是,我无法执行以下操作,因为.find()必须在...

回答如下:

通过在查询中进行分组的$project表达式

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论