过滤特定类型的所有项目(参考文档)

Posted

技术标签:

【中文标题】过滤特定类型的所有项目(参考文档)【英文标题】:Filtering all items of specific type (ref document) 【发布时间】:2015-10-23 13:42:22 【问题描述】:

我正在尝试查询属于inventory.product.type 计算机的所有inventory.products。我不知道该怎么做。我已阅读文档并尝试了一些,但似乎:db.inventory.products.find(type: code: $in: ['computers'] ) 将是正确的方法,但永远不会取回任何类型的产品。

我在 mongo 提示符中构建查询的原因是我可以在成功时将其移至我的服务。

有什么建议吗?

库存.产品

'use strict';

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var ProductSchema = new Schema(
  name: 
    type: String,
    required: 'Name is required'
  ,
  type: 
    type: Schema.ObjectId,
    ref: 'Inventory.Product.Type',
    required: 'Product type is required'
  ,
);

mongoose.model('Inventory.Product', ProductSchema);

Inventory.Product.Type

'use strict';

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var ProductTypeSchema = new Schema(
  code: 
    type: String,
    trim: true
  ,
  name: 
    type: String,
    required: 'Please enter name',
    trim: true
  ,
);

mongoose.model('Inventory.Product.Type', ProductTypeSchema);

【问题讨论】:

【参考方案1】:

解决方案是在我的服务中创建一个方法,如下所示:

service.autoCompleteType = function(query) 
  var productList = null;
  var products = [];

  return Product
    .find()
    .populate('type')
    .exec()
    .then(function(products)
      productList = products;
    )
    .then(function(quantities)
      for (var i in productList) 
        if (productList[i].type.code === query) 
          products.push(productList[i]);
        
      
    return products;
  );
;

这使我可以根据需要查询type.code 并返回与query 匹配的所有内容

【讨论】:

以上是关于过滤特定类型的所有项目(参考文档)的主要内容,如果未能解决你的问题,请参考以下文章

sql 获取特定文档类型的所有项目的所有属性值

Mongoose:聚合获取数组类型字段的文档并根据特定字段过滤这些文档

xmppframework 迪斯科项目过滤

Mongodb中的过滤时间范围

Solr 过滤器查询,包括 NOT 和 OR

查询子文档并从中选择过滤后的数据 Mongoose