通过包含对象名称的变量检索对象

时间:2016-08-03 12:38:43

标签: mongodb

我在MongoDB中有一个文档,如下所示:

[
  {
    _id: 1234..,
    obj1: { name: "A" },
    obj2: { name: "AB" },
    obj3: { name: "ABC" },
    obj4: { name: "ABCD" },
  },
  {
    _id: 5678..,
    obj1: { name: "B" },
    obj2: { name: "BC" },
    obj3: { name: "BCD" },
    obj4: { name: "BCDE" },
  }
]

等等。我有一个API,我使用带有命名对象的查询字符串的URL查询此API。该网址可能看起来像http://api.domain.com?size=obj2

现在我想查询我的mongodb并只返回与req.query.size变量匹配的对象,我写过的所有其他.find()都有我可以参考的内容但是我得到的只是对象名称。

这是可行的还是我被迫在我的所有文件obj2: { name: "AB", objectName: "obj2" }中注入这样的内容,以便能够.find({ objectName: req.query.size })

1 个答案:

答案 0 :(得分:0)

猜猜这样的结构会更好

{
    'obj2' : { name: "AB", objectName: "obj2" },
    'obj3' : { name: "ABC", objectName: "obj3" },
    'obj4' : { name: "ABCD", objectName: "obj4" }
}

<强>原因

  1. 您无法在文档键值上创建索引,因此将来可能会遇到此问题
  2. 您无法按文档键值进行查询,只能按存储在键
  3. 上的值进行查询
  4. 像你这样的结构你会遇到性能问题