【发布时间】:2015-05-16 01:52:48
【问题描述】:
我正在尝试从 MongoDB 获取子文档。我可以得到父文档,它看起来像:
{
"_id" : ObjectId("5550a7948be994430f7df1b4"),
"address" : "Grafton St, Dublin 2",
"coords" : [
-6.2597468,
53.3422998
],
"facilities" : [
"food",
"irish history"
],
"name" : "Laura Dunphy",
"openingTimes" : [
{
"days" : "Monday - Friday",
"times" : [
"10am",
"12pm",
"2pm"
]
},
{
"days" : "Saturday",
"times" : [
"8am",
"10am",
"12pm"
]
}
],
"rating" : 3,
"reviews" : [
{
"author" : "Simon Holmes",
"id" : ObjectId("5550c26e8c334adebc7c5dc3"),
"rating" : 5,
"timestamp" : ISODate("2013-07-15T23:00:00Z"),
"reviewText" : "Great guide, it was fun."
}
]
}
当我这样做时:
console.log('guide.reviews is ');
console.log(guide.reviews);
我明白了:
guide.reviews is
[{ id: 5550c26e8c334adebc7c5dc3,
rating: 5,
timestamp: Tue Jul 16 2013 00:00:00 GMT+0100 (IST),
reviewText: 'Great guide, it was fun.',
createdOn: Fri May 15 2015 18:20:57 GMT+0100 (IST),
author: 'Simon Holmes' }]
这很好。但是当我尝试使用 Mongoose id 函数获取评论时,我总是返回 null:
review = guide.reviews.id('5550c26e8c334adebc7c5dc3');
console.log('review is ');
console.log(review);
结果:
review is
null
知道我做错了什么吗?
【问题讨论】:
-
我从未使用过这种方法,但是,文档说它会搜索匹配的 "_id",我在您的子文档中看到的只是
id跨度> -
@KevinB 你是对的,子文档是用 id 而不是 _id 保存的。当我更改为 _id 时,它可以工作