1

我需要用相应的菜单项来存储餐馆,所以我做了这样的事情

{ name: 'Foo',
  menu: 
 [ { item: 'foo',
   description: '...',
   price: 20 },
 { item: 'bar',
   description: '...',
   price: 30 } ]
}

问题是我有时需要访问这些项目,但这样做并不容易,我应该改用这样的东西吗?

{ name: 'Foo',
menu: 
{ "0": { item: 'foo',
   description: '...',
   price: 20 },
 "1": { item: 'bar',
   description: '...',
   price: 30 } }
}

我认为找到一个特定的项目更便宜。

4

1 回答 1

1

使用可通过编号键访问的嵌入式对象很少是正确的方法。MongoDB 有操作符来方便访问数组中的项目,从而提供更好的灵活性。

有关仅提取所需数组元素的方法,请参阅$elemMatch和投影运算符。$

例如,'foo'要从您的第一个示例文档中获取菜单项:

db.restaurants.findOne({name: 'Foo'}, {menu: {$elemMatch: {item: 'foo'}}});
于 2012-10-22T00:15:47.360 回答