2012-10-19 56 views
2

在SQL我可以用“状态”虚拟场下面的SELECT语句:做猫鼬支持虚拟领域中选择,如SQL

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

是否像在猫鼬?

+0

MongoDB一般不这样,我会认为答案是否定的,除非猫鼬以某种方式实现它的客户端。 – Sammaye

回答

1

是的。猫鼬模式支持虚拟。查看guide的架构部分。我想你可能想这样的事情:

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

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

尽管这实际上是模式上的存储字段,它不是吗? SQL版本允许您在查询中即时创建从其他字段值派生的虚拟字段。 – Sammaye

+1

它没有存储到数据库,这就是为什么他们称之为虚拟。 :) –

+0

啊好吧我现在看到它,虽然我坚持我的第一个评论,你不能在查询中使用该字段,如:'选择字段+ fieldb作为fieldc其中fieldc = 1'我有一个讨厌的感觉,会去成为他的下一个问题:) – Sammaye