Mongodb 强制查询的投影规则
有没有一种方法可以基本上对集合上的所有查询强制执行投影规则?因此,例如,如果我有一个集合Mongodb 强制查询的投影规则,mongodb,Mongodb,有没有一种方法可以基本上对集合上的所有查询强制执行投影规则?因此,例如,如果我有一个集合小部件,有没有办法确保默认情况下查询中不会返回文档中存在的字段secretAttribute,除非查询投影明确要求它。这与自动投影\u id的方式相反,除非投影参数明确拒绝它。例如,我可能有一个小部件文档: {u id:'51A4E3962DFF00105000009',名称:'foo',颜色:'white',状态:'open',secretAttribute:'bar'} 如果我执行db.widget.fi
小部件
,有没有办法确保默认情况下查询中不会返回文档中存在的字段secretAttribute
,除非查询投影
明确要求它。这与自动投影\u id
的方式相反,除非投影参数明确拒绝它。例如,我可能有一个小部件文档:
{u id:'51A4E3962DFF00105000009',名称:'foo',颜色:'white',状态:'open',secretAttribute:'bar'}
如果我执行db.widget.find({color:'white'})
它将返回文档,但不显示secretAttribute
:
{u id:'51A4E3962DFF00105000009',名称:'foo',颜色:'white',状态:'open'}
我必须在projection
参数中明确要求secretAttribute
,以find()
:
db.widget.find({color:'white'},{name:1,color:1,status:1,secretAttribute:1})
获取它
谢谢目前没有办法做到这一点。如果它是一个大而通常不需要的字段,你可以考虑把它存储在一个单独的集合中(当你确实需要它时,需要第二次读取,但是它可能是一个总的资源节省,取决于它有多大等)。 < P>你现在所要求的是不可能的。在我的应用程序中,我在memcached中保留了一个更轻版本的对象。例如,在本例中,您可以创建一个widgetLite对象并将其保存在memcache中,该对象可能只有id、名称、颜色和状态。在大多数情况下,您只需要检索widgetLite对象,从memcache获取它将非常快,并将导致更少的db查询,从而提供更好的性能