Php Return";“零”;对于不存在的字段

Php Return";“零”;对于不存在的字段,php,mongodb,Php,Mongodb,在我的mongoDB集合中,有一些文档的字段不存在 从集合中获取文档时,我希望这些字段为“零” 有什么方法吗?因为MongoDB是基于文档的数据库,所以没有像SQL这样的通用表结构。一个BSON文档(mongo文档)通常可以有不同的内容 您可以创建数组,用于基本比较 默认情况下,MongoDB中的非存在字段将返回null,并且仅返回null 解决方法之一是使用聚合: db.c.aggregate([ {$project: {field: {$ifNull: ['$field', 0]}

在我的mongoDB集合中,有一些文档的字段不存在

从集合中获取文档时,我希望这些字段为“零”


有什么
方法吗?

因为
MongoDB
基于文档的数据库
,所以没有像
SQL
这样的通用表结构。一个
BSON
文档(mongo文档)通常可以有不同的内容


您可以创建数组,用于基本比较

默认情况下,MongoDB中的非存在字段将返回
null
,并且仅返回
null

解决方法之一是使用聚合:

db.c.aggregate([
    {$project: {field: {$ifNull: ['$field', 0]} }}
])
但我不推荐这种方法


相反,我建议将应用程序升级为使用诸如activerecord()之类的模式

MongoDB没有架构,不是因为它是面向文档的。它没有一个,因为它在核心中编程为模式灵活。Document DB可以像任何DB一样接受基本模式,但他们选择您必须在应用程序中实现它。要正确,MongoDB有动态模式,通常使用MongoDB的想法是在需要有差异的情况下使用。对于单个文档来说,这是一个很好的方法,动态和灵活的模式是可以互换的,我想请你告诉我两者的区别。我不知道你的最后一句话是什么意思。如果我需要为特定领域做这件事,你建议的方法是好的。但是,问题是,我不知道哪些字段在某些文档中不存在。所以,我只需要为这些文档中所有不存在的字段返回值零。@RajuPonnala难道你不能在应用程序中使用foreach循环在字段上非常轻松地编写代码吗?当您找到记录时,将其添加到函数的一部分,您会发现它很容易导致堆栈溢出!我对你的问题做了一些修改,使之更清晰易懂,希望你能得到更多的答案。如果您对我的编辑不满意,请随意撤销它们。