如何在生产和查询中向mongodb添加新字段?

时间:2019-07-06 19:51:54

标签: mongodb mongoose

有关mongo db的结构问题。我有一个node / express / mongoose应用程序,在我的mongo数据库中查询我的其余api,并使其在生产环境中运行。

我想添加新字段以进行查询,但是我遇到的问题是许多旧文档将没有这些新字段。添加新字段和查询的最佳方法是什么?我已经使用过field :{ exists: true }且可以使用,但是如果这些新字段为true或false,如何查询字段?

我想查找所有文档,而不仅仅是查找特定字段是否存在。甚至不确定是否可行,我可能需要将新字段添加到每个文档中吗?

1 个答案:

答案 0 :(得分:1)

如果您要查询的字段在任何文档中都不存在,则该文档将被丢弃。为了演示它,这是我在集合中拥有的两个文档,而这些文档中没有我要查询的字段。 Mongo只是返回了文档that matched的查询要求

示例文档

{
    "_id": 2,
    "description": "QUESTION",
    "names": [
      "A",
      "B",
      "C",
      "D",
      "E"
    ]
  },
  {
    "_id": 3,
    "description": "ANSWER",
    "newField1": "I have some value",  <=== new field only for this doc
    "names": [
      "A2",
      "B2",
      "C2",
      "D2",
      "E2"
    ]
  }

我的查询

db.collection.find({
  "newField1": "I have some value"
})

结果

{
    "_id": 3,
    "description": "ANSWER",
    "names": [
      "A2",
      "B2",
      "C2",
      "D2",
      "E2"
    ],
    "newField1": "I have some value"
  }