首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB:如何获取所有的嵌入式数据?

问MongoDB:如何获取所有的嵌入式数据?
EN

Database Administration用户
提问于 2014-09-26 11:37:45
回答 2查看 279关注 0票数 0
代码语言:javascript
复制
 I have this data:

> db.Category.find().pretty()
{
    "_id" : ObjectId("542450a928db034349fb3bf2"),
    "name" : "A category",
    "products" : [
        {
            "_id" : ObjectId("542450a928db034349fb3bf3"),
            "name" : "Producto de categoria",
            "price" : 11.11
        }
    ]
}

当我运行db.Category.find( {}, {products:1} )时,我得到以下信息:

代码语言:javascript
复制
{ "_id" : ObjectId("542450a928db034349fb3bf2"), "products" : [ { "_id" : ObjectId("542450a928db034349fb3bf3"), "name" : "Producto de categoria", "price" : 11.11 } ] }

我得到一个产品的数据,但如何获得所有产品的数据?

EN

回答 2

Database Administration用户

发布于 2014-09-26 16:37:51

如果您有多个包含产品的文档,可以通过捕获查询游标并在集合上迭代来检索所有文档,如下所示:

代码语言:javascript
复制
replset:PRIMARY> var cur = db.Category.find( {}, {products:1} );
replset:PRIMARY> while (cur.hasNext()) {
... var doc = cur.next();
... printjson(doc);
... }
{
    "_id" : ObjectId("542450a928db034349fb3bf2"),
    "products" : [
        {
            "_id" : ObjectId("542450a928db034349fb3bf3"),
            "name" : "Producto de categoria",
            "price" : 11.11
        }
    ]
}

如果在" products“数组中有多个产品,那么将迭代每个结果文档中包含的数组。

票数 1
EN

Database Administration用户

发布于 2014-09-26 14:23:03

您的NoSql状态似乎是正确的。你只有一份产品的文件,这就是为什么你只有一份。

代码语言:javascript
复制
db.Category.find( {}, {products:1} )

或者你可以用

代码语言:javascript
复制
db.Category.find({products:1})

不要与“产品:1”混淆,它是你想要的产品的投影。这里的投影是{ field1: <boolean>, field2: <boolean> ... }类型的。您希望在查询数据时显式包含的字段,如"products:1“,否则将排除使用"products:0”。

您可以参考以下链接:在这里输入链接描述

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/77743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档