【问题标题】:does mongoose support virtual fields in select like SQLmongoose 是否支持 select 中的虚拟字段,如 SQL
【发布时间】:2012-10-10 12:42:40
【问题描述】:

在 SQL 中,我可以使用“状态”虚拟字段创建以下 SELECT 语句:

SELECT 
   CASE 
      WHEN field = 1 THEN 'sale'
      ELSE 'none'
   END as status

猫鼬中有类似的东西吗?

【问题讨论】:

  • MongoDB 通常不会这样,除非猫鼬以某种方式在客户端实现它,否则我认为答案是否定的。

标签: sql node.js mongodb express mongoose


【解决方案1】:

是的。 Mongoose 模式支持虚拟。查看guide 的架构部分。我想你可能想要这样的东西:

var salesSchema = new Schema({
  sale: Number
});

salesSchema.virtual('status').get(function() {
  if (this.sale === 1) {
    return 'sale';
  } else {
    return 'none';
  }
});

【讨论】:

  • 虽然这实际上是架构上的存储字段,不是吗? SQL 版本允许您在查询中动态创建从其他字段值派生的虚拟字段。
  • 是不是没有存入数据库,所以才叫它虚拟。 :)
  • 啊,好吧,我现在明白了,虽然我坚持我的第一条评论,但您不能在查询中使用该字段,例如:select field+fieldb as fieldc where fieldc = 1 我有一种讨厌的感觉,这将是他的下一个问题:)
  • 你想做 sales.find({status: 'sale'}) 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 2011-03-01
  • 1970-01-01
  • 2015-06-10
相关资源
最近更新 更多