Aus*_*vis 5 mongoose mongodb node.js mongodb-query
所以我在课程集中有这个文件
{
"_id" : ObjectId("53580ff62e868947708073a9"),
"startDate" : ISODate("2014-04-23T19:08:32.401Z"),
"scoreId" : ObjectId("531f28fd495c533e5eaeb00b"),
"rewardId" : null,
"type" : "certificationCourse",
"description" : "This is a description",
"name" : "testingAutoSteps1",
"authorId" : ObjectId("532a121e518cf5402d5dc276"),
"steps" : [
{
"name" : "This is a step",
"description" : "This is a description",
"action" : "submitCategory",
"value" : "532368bc2ab8b9182716f339",
"statusId" : ObjectId("5357e26be86f746b68482c8a"),
"_id" : ObjectId("53580ff62e868947708073ac"),
"required" : true,
"quantity" : 1,
"userId" : [
ObjectId("53554b56e3a1e1dc17db903f")
]
},...
Run Code Online (Sandbox Code Playgroud)
我想要做的就是创建一个返回具有特定所有课程的查询userId
中userId
也就是在阵列steps
阵列特定userId
。我试过$elemMatch
像这样使用
Course.find({
"steps": {
"$elemMatch": {
"userId": {
"$elemMatch": "53554b56e3a1e1dc17db903f"
}
}
}
},
Run Code Online (Sandbox Code Playgroud)
但它似乎返回了一个空文档。
$elemMatch
除非您在该嵌套数组元素中实际有复合子文档,否则没有必要使用该用法。除非引用的值可能在另一个复合文档中重复,否则也不是必需的。
既然这是ObjectId
我们正在讨论的,那么它将是唯一的,至少在这个数组中是这样。所以只需使用“点符号”形式:
Course.find({
"steps.userId": ObjectId("53554b56e3a1e1dc17db903f")
},
Run Code Online (Sandbox Code Playgroud)
回去看看$elemMatch
文档。在这种情况下,直接的“点符号”形式就足够了
归档时间: |
|
查看次数: |
1192 次 |
最近记录: |