我已经阅读了MongoDB中有关投影的所有内容。我希望这很简单,但由于mongo查询的巨大灵活性,我错过了。
在mysql数据库中,我们采用了一种业务实践,即在“隐藏”字段前面加上下划线。我们的应用程序知道如何隐藏这些字段。
将一些数据移动到mongo,我需要检索文档,省略所有带下划线前缀的字段。当然,这应该在查询中完成,而不是在检索后进行文档操作。
所有像$regex,$in,$all这样的运算符似乎都适用于值。我需要建立一个忽略基于其名称的未知字段数的投影。类似于:
db.coll.find({}, {"_*": 0})
当然这不管用,但可以解释这个想法。
我应该注意:这是必要的,因为文档是由应用程序用户编辑的,所以我不知道模式可能是什么样子的。我知道我们的“internal”字段的前缀是一个u,这些字段需要通过编辑器的省略来保护。
希望很容易…
最佳答案
您可以将一个单独的字段设置为hidden_fields
或其他。请参阅以下架构。
{_id: 'myid1', hidden_fields: {"_foo": "bar", "_foo2": "bar2"}, key1: value1 ...}
现在根据上面的模式来做,
db.collection.find({ ... }, {hidden_fields: 1})
这将显示隐藏字段。此外,还可以在子文档中的字段上建立索引,这样就不会有性能上的损失。
关于mongodb - MongoDB查询 - 限制名称与模式匹配的字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13848959/