2

我是 mongodb 新手

db.myjobs.find()得到以下结果

{ "_id" : ObjectId("52849a7b8dd61980d1b49b87"), "browser" : "FF20", "id" : "70", "jobs" : [ { "_id" : "5281d1680d0f2f2aaec5787e",   "date" : "Tue Nov 12 2013 12:27:44 GMT+0530 (IST)", "id" : "29" } ],  "os" : "VM-WIN7-64", "server" : "172.16.2.120" }

从上面的结果我必须在里面"os" : "VM-WIN7-64"的基础上返回 id=29jobs

我正在使用以下代码,这是不正确的。

db.myjobs.find( { id: 29 } )

我怎样才能"os" : "VM-WIN7-64"通过在里面输入id(id=29)jobs 而不需要os使用来获取详细信息"id":"70"

4

3 回答 3

7

Like this:

db.myjobs.find( { "jobs.id": "29" } )

MongoDB doesn't perform recursive searches so if want to find field in nested document you have to provide a path to the field using dot notation.

Moreover fields in MongoDB are typed so string "29" is not equal to number 29

于 2013-11-14T10:16:50.820 回答
2

您可以使用点运算符进入对象内部。

db.myjobs.find({
   "jobs.id": "29"
})
于 2013-11-14T10:18:38.430 回答
0

以下应该工作

db.myjobs.find({"jobs.id":"29"},{"_id":0,"os":1})

于 2015-07-11T07:54:47.340 回答