我使用mongo,这里有一点问题。我想得到一条记录,但我只是在记录中有一个数组列表的id。这就是我的数据。
{
"_id": ObjectId("1113000001"),
"menu": "desertsunday",
"fruit": {
"0": ObjectId("102b000000"),
"1": ObjectId("5200000000"),
"2": ObjectId("2900000000"),
"3": ObjectId("9870000002") }
}
我只有102b000000用于获取记录,我需要从那里获取菜单但我无法用标准mongo获得它。有人能帮助我吗?
答案 0 :(得分:5)
我同意Andrew所说的大部分内容,但相反,我会重新设计架构,以便您实际拥有一个数组。在这种情况下,您的文档将如下所示:
{ "_id": ObjectId("1113000001"), "menu": "desertsunday", "fruit": [ ObjectId("102b000000"), ObjectId("5200000000") ] }
然后您可以使用以下命令获取根文档:
db.items.find({"fruit": ObjectId("102b000000")})
答案 1 :(得分:1)
实际上你架构中的水果不是数组,它是对象列表,因此只有一种方法可以通过一个水果ID来获取根文档:
db.items.find({"fruit.0": ObjectId("102b000000")})
在上面的查询中,您应该知道获取根文档的水果的序数。
但是如果您可以按如下方式重新设计数据库:
{
"_id": ObjectId("1113000001"),
"menu": "desertsunday",
"fruit": [
{ i:0, id: ObjectId("102b000000") },
{ i:1, id: ObjectId("5200000000") }
]
}
您可以通过嵌入式数组项ID轻松获取根文档:
db.items.find({"fruit.id": ObjectId("102b000000")})