按字段筛选并选择另一个字段mongodb

时间:2017-02-18 06:21:31

标签: node.js mongodb

我在应用程序中使用了mongoose,并尝试检索类型为country的文档并获取元数据字段。

我的文档如下所示,

enter image description here

我有代码,

  dbHelper.query(mongoose.model('_entity'), {
                'type': 'country'
            }, function (error, data) {                
                callback(data);
            });

dbHelper:

query: function (model, conditon, options) {
            return new Promise(function (resolve, reject) {
                options = options || {};
                model.find(conditon, {}, options, function (error, data) {
                    if (error)
                        console.log("error is"+err);
                        reject(error);
                    console.log("data is "+data);
                    resolve(data);
                })
            })
        }

如何更改此选项以选择 metadata 字段?

2 个答案:

答案 0 :(得分:1)

您需要select

mongoose
  .model('_entity')
  .find()
  .where('type').equals('country')
  .select('metadata')
  .exec( function(error, data) {
      callback(data);
  });

更新:例如projection = ["metadata", "name"]

query: function (model, conditon, projection, options) {
            return new Promise(function (resolve, reject) {
                options = options || {};
                projection = projection || [];
                model.find(conditon, projection.join(" "), options, function (error, data) {
                    if (error)
                        console.log("error is"+err);
                        reject(error);
                    console.log("data is "+data);
                    resolve(data);
                })
            })
        }

答案 1 :(得分:1)

您可以稍微更改visible查询,只选择.site-header { position: relative; overflow: hidden; // Enforce BFC } 或您想要的find

metada

如果您无法在现有fields查询中添加元数据,则可以尝试其他方法。

在查询函数中添加另一个参数model.find(conditon, {"metadata" : 1}, options, function (error, data) { if (error) console.log("error is"+err); reject(error); console.log("data is "+data); resolve(data); });

find

并像这样使用它:

projection

我认为这适用于您的情况。