2016-08-03 55 views
1

检索对象我有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进行查询。该URL可能看起来像这样http://api.domain.com?size=obj2

现在我想查询我的MongoDB,并只返回的对象与req.query.size变量相匹配的是,所有的,我曾经写过确实有东西,我可以引用我的其他.find()但在这里我得到的是对象名称。

这是可行的还是我被迫在我的所有文档中注入类似obj2: { name: "AB", objectName: "obj2" }只是为了能够做到.find({ objectName: req.query.size })

回答

0

猜猜,像这样的结构会更好

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

原因

  1. 不能创建文件的键值索引,以便将来你可能有问题,这
  2. 您无法通过文档键值进行查询,只能通过存储在键上的值进行查询
  3. 像您这样的结构ha你会遇到性能问题
+0

这是我最终做的。我意识到用'Model.find({},req.query.size)'查询我的数据库要简单很多,而且根据其他人,现在也是你,这会给我带来性能问题。 –