我的文档如下:
{
draft: "<draft_content>",
published: "<published_content>"
}
当我更新文档时,我只更新"draft"
或"draft"
和"published"
。因此,文档可能如下所示:
{
draft: "B",
published: "A"
}
or
{
draft: "B",
published: "B"
}
我需要的是检索包含draft === published
信息的所有文档,而不实际返回draft
和published
字段。在SQL中我会这样做:
select (draft = published)::boolean as is_published from documents;
是否可以在MongoDB中执行此操作?
我还考虑过在每个文档中存储isPublished: true/false
标记,但是当我更新draft
时,无法确定draft
是否与published
不同。例如,如果我有文档{draft: "A", published: "A", isPublished: true}
,那么使用{draft: "A", isPublished: false}
更新它会更改isPublished的状态,即使草稿与已发布的内容相同...
答案 0 :(得分:1)
MongoDB没有专门的支持。但是,您可以使用$where
来实现此目的。
db.myCollection.find( { $where: "this.draft == this.published" }, {id:1} )
这只会为您提供draft
等于published
的文档的ID。但mongo会做全桌扫描,我很害怕。