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} )时,我得到以下信息:
{ "_id" : ObjectId("542450a928db034349fb3bf2"), "products" : [ { "_id" : ObjectId("542450a928db034349fb3bf3"), "name" : "Producto de categoria", "price" : 11.11 } ] }我得到一个产品的数据,但如何获得所有产品的数据?
发布于 2014-09-26 16:37:51
如果您有多个包含产品的文档,可以通过捕获查询游标并在集合上迭代来检索所有文档,如下所示:
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“数组中有多个产品,那么将迭代每个结果文档中包含的数组。
发布于 2014-09-26 14:23:03
您的NoSql状态似乎是正确的。你只有一份产品的文件,这就是为什么你只有一份。
db.Category.find( {}, {products:1} )或者你可以用
db.Category.find({products:1})不要与“产品:1”混淆,它是你想要的产品的投影。这里的投影是{ field1: <boolean>, field2: <boolean> ... }类型的。您希望在查询数据时显式包含的字段,如"products:1“,否则将排除使用"products:0”。
您可以参考以下链接:在这里输入链接描述
https://dba.stackexchange.com/questions/77743
复制相似问题