Javascript MongoDB.find()仅限ObjectId';它嵌入在一个数组中。
我试图只从嵌入到projects数组中的一个特定文档中获取ObjectId。 基本上,我试图建立一个数据库,将有用户,每个用户将有自己的项目。 谢谢大家!Javascript MongoDB.find()仅限ObjectId';它嵌入在一个数组中。,javascript,arrays,mongodb,Javascript,Arrays,Mongodb,我试图只从嵌入到projects数组中的一个特定文档中获取ObjectId。 基本上,我试图建立一个数据库,将有用户,每个用户将有自己的项目。 谢谢大家! db.users.find().pretty() { "_id" : ObjectId("5762c0cf2b9a78006373a684"), "name" : "seq", "pass" : "seq", "projects" : [ { "pid" : Object
db.users.find().pretty()
{
"_id" : ObjectId("5762c0cf2b9a78006373a684"),
"name" : "seq",
"pass" : "seq",
"projects" : [
{
"pid" : ObjectId("5762c0ba2b9a78006373a682"),
"name" : "aaa"
},
{
"pid" : ObjectId("5762c0ba2b9a78006373a683"),
"name" : "bbb"
}
]
}
{
"_id" : ObjectId("5762c28d2b9a78006373a687"),
"name" : "leq",
"pass" : "leq",
"projects" : [
{
"pid" : ObjectId("5762c2892b9a78006373a685"),
"name" : "ccc"
},
{
"pid" : ObjectId("5762c2892b9a78006373a686"),
"name" : "ddd"
}
]
}
假设我们想要两个PID {“pid”:ObjectId(“5762c0ba2b9a78006373a682”)}和 {“pid”:ObjectId(“5762c2892b9a78006373a686”),} 只有内部文件 因此,所需的响应应该如下所示:
{
"_id" : ObjectId("5762c0ba2b9a78006373a682"),
"name" : "aaa"
},{
"_id" : ObjectId("5762c2892b9a78006373a686"),
"name" : "ddd"
}
聚合框架可以操作文档,只匹配需要的文档,并按项目阶段转换内部结构:
var match = {
$match : {
"projects.pid" : {
$in : [ObjectId("5762c0ba2b9a78006373a682"),
ObjectId("5762c2892b9a78006373a686")]
}
}
}
var unwind = {
$unwind : "$projects"
};
// now move array objet as top level object
var project = {
$project : {
_id : "$projects.pid",
name : "$projects.name",
// list other fields here
}
}
db.vic.aggregate([match, unwind, match, project])
因此,您正在寻找一个只返回1
pid
?@AndreiM的查询。在本例中,我需要所有的pid,包括pid'sso,类似于下面的db.users.find({},{projects:1,{u id:0}).pretty()
您需要强制省略{u id>,因为它将返回其他方式您使用的mongo版本是什么?不清楚您在这里要问什么。请编辑您的问题以显示预期结果。