> db.checklistDB.find({},{title:1, _id:0})
{ "title" : "Untitled Checklist" }
{ }
{ }
{ }
{ }
{ }
> db.checklistDB.find({},{title:1})
{ "title" : "Untitled Checklist", "_id" : "4FaJcAkzAY3Geyggm" }
{ "_id" : "3imNYy8SPcRDjLcqz" }
{ "_id" : "977fPtvEn7hiStqzp" }
{ "_id" : "QcAEMnr6R7qfaWFR8" }
{ "_id" : "eEsmKMdQGYKqnhTNB" }
{ "_id" : "cL6R8qxwWhvTr2kmy" }
嗨,大家好,
从上面可以看出,我发出了两个命令:
db.checklistDB.find({},{title:1})和 * db.checklistDB.find({},{title:1,_id:0})
两个查询都返回6条记录,这些记录是数据库中存在的所有记录。我想它只会返回有“标题”作为字段的记录。有什么我做错了吗?
答案 0 :(得分:2)
查找的第二个参数是投影。在您的情况下,它会在文档中查找title
字段,如果它不存在,则返回none
。如果要过滤文档,则应使用以下查询:
db.checklistDB.find({title: {$exists: true}}, {title:1, _id:0})
修改强> 如果您接受查询:
db.checklistDB.find({}, {title:1, _id:0})
它转换为:检索所有文档({}
作为查询参数),如果存在则为每个文档提供title
或默认值(none
)如果不存在({title:1, _id:0}
{1}}作为投影参数)。投影参数仅用于转换而不是过滤文档。