网站策划报告怎么写,免费下载网站软件,dedecms电影网站模板,太原市0元网站建设系统开发过程中#xff0c;会有保存表达式的需求。比如保存数字或字符的字段拼接规则等。开发人员期望读取或保存这些规则时#xff0c;不要被插入数据库或从数据库中读取规则时执行。或者保存模版时#xff0c;也不希望讲模版中的表达式计算出结果。
mongodb的$literal方法…系统开发过程中会有保存表达式的需求。比如保存数字或字符的字段拼接规则等。开发人员期望读取或保存这些规则时不要被插入数据库或从数据库中读取规则时执行。或者保存模版时也不希望讲模版中的表达式计算出结果。
mongodb的$literal方法为这类需求提供了便利。
$literal,不会为表达式运算赋值而是返回没有解析的表达式。 举例 结果 {$literal: { $add: [2, 3]}} { $add: [2, 3]} {$literal: { $literal: 1}} { $literal: 1}
使用方法
在aggregation中使用用于字段后面的描述。
{$literal: value}
使用举例
返回$的字面意义
在表达式中 $代表字段路径提供访问字段值的路径。如$eq: [$price, $1]执行了字段$price, $1的等值判断。
下面的例子中使用$literal将带有$符号的$1作为常量来使用。
db.storeInventory.insertMany([{_id: 1, item: napkins, price: $2.50},{_id: 2, item: coffee, price: 1},{_id: 3, item: soap, price: $1}
])db.storeInventory.aggregate([{$project: {costsOneDollar: {$eq: [$price, {$literal: $1}]}}}
])
查询语句中的costsOneDollar字段返回布尔值当价格时1美元时返回true否则返回false。
{_id: 1, costsOneDollar: false},
{_id: 2, costsOneDollar: false},
{_id: 3, costsOneDollar: true}
在返回结果中添加新字段
aggregation中通过定义表达式field: 1来指定$project中返回的字段。下面的例子中 使用$literal返回1来实现project中添加新字段。
在books集合中包含两条数据
{_id: 1, title: Dracula, condition: new}
{_id: 2, title: The Little Prince, condition: new}
使用{$literal: 1}表达式返回一个新字段editionNumber
db.books.aggregate( [{$project: {title: 1, editionNumber: {$literal: 1}}}
])
执行后返回结果
{_id: 1, title: Dracula, editionNumber: 1}
{_id: 2, title: The Little Prince, editionNumber: 1}