0

作为前言,我将 Node.js 与 Mongo-db-native 一起使用。

我还使用 GridFS 来存储图像,每个图像都有元数据,其中一个是产品 ID。

我想查询fs.files与特定产品关联的所有图像并返回图像。

这是我目前这样做的方式:

this.collection.ensureIndex({
    product_id: 1,
}, function (err, edIndex) {
    self.collection.group(   ['group'] , {
        "product_id": ObjectID(product_id)
    } , {
        docs: []
    } , function (doc, prev) {
        prev.docs.push({
            width: doc.width,
            height: doc.height,
            _id: doc._id
        });
    } , true , function (err, results) { 
        if (err) {
            callback(err)
        } else {
            callback(null, results)
        } 
    });
});

我发现这非常慢。有没有人有任何建议作为替代方案或如何提高性能?

谢谢!

4

1 回答 1

1

这是一个使用 Mongo shell 语法的简单查询,它将在其元数据中找到 ProductId = 42 的所有 GridFS 文件。

db.fs.files.find({"metadata.ProductId": 42});

返回的文档将包含一个文件名,该文件名可以与 mongo-native 的 GridStore 一起使用。

于 2012-05-22T21:30:10.383 回答