0

我的文档如下所示:

{ "entity_id" : 2,
  "features" :
  [
     { "10" : "name" },
     { "20" : "description" },
     ... ,
     { "90" : "availability" }
  ]
 }

我想知道两件事:“entity_id”(2)的值,以及“特征”数组的元素之一中的属性值,检索子文档

{ "20" : "description" }

在一个查询中。非常感谢!

4

1 回答 1

0

如果您只想获取整个文档的一部分,请使用所谓的投影运算符

请参阅以下示例:

> db.collection.find().pretty()
{
    "_id" : ObjectId("52e861617acb7ce761e64a93"),
    "entity_id" : 2,
    "features" : [
        {
            "10" : "name"
        },
        {
            "20" : "description"
        },
        {
            "90" : "availability"
        }
    ]
}

投影运算符在 find() 中指定,如下所示:

> db.collection.find({},{ features : { $elemMatch : { 20 : { $exists: true } }}}).pretty()
{
    "_id" : ObjectId("52e861617acb7ce761e64a93"),
    "features" : [
        {
            "20" : "description"
        }
    ]
}

> db.collection.find({},{ entity_id : 1, features : { $elemMatch : { 20 : { $exists: true } }}}).pretty()
{
    "_id" : ObjectId("52e861617acb7ce761e64a93"),
    "entity_id" : 2,
    "features" : [
        {
            "20" : "description"
        }
    ]
}
> db.collection.find({},{ _id : 0, entity_id : 1, features : { $elemMatch : { 20 : { $exists: true } }}}).pretty()
{ "entity_id" : 2, "features" : [ { "20" : "description" } ] }

$elemMatch从 2.2 版开始,for 投影在 MongoDB 中可用。

希望它能解决你的问题。

于 2014-01-29T02:13:31.943 回答