我有两本架构,一本书和其他用户
let mongoose = require('mongoose'),
Schema = mongoose.Schema;
let book = new Schema({
id: {type : Schema.Types.ObjectId, default: null},
author: {type : Array, default: []},
userId:{type:Array,default:[]},
issued:[{type:Schema.Types.ObjectId,ref:'users'}]
});
let user = new Schema({
id: {type : Schema.Types.ObjectId, default: null},
name:{type : String, default: null},
address:{type : String, default: null}
});
书籍架构中的已发布属性包含已发行书籍的用户的详细信息。
可以使用book Schema的userId填充Issued Property 将book schema的userId与用户Schema的Id匹配。
let user = mongoose.model("Model", userSchema, "users");
let book = mongoose.model("book", bookSchema);
book.find({}).populate('users').exec(function (err, result) {
console.log(result);
//Query is failing what wrong i am doing.
});
我无法确定如何获取用户详细信息。
我想要对象:
{
id: 8888998898989,
author: 'Author ',
userId:['232323232332','ssssssss'],
issued:[
{'id':232323232332,'name':'User1'},
{'id':ssssssss,'name':'User2'}
]
}
答案 0 :(得分:0)
您需要将populate方法与对象文字一起使用,如下所示:
.populate({ path: 'id', model: 'ssers', select:'id name' })
您可以使用lean()查询,以便您可以修改输出,然后执行填充这两个字段,只保留您想要的字段:
.lean().populate('users', 'id name address')
可以找到更多示例https://neo4j.com/developer/guide-create-neo4j-browser-guide/和here
答案 1 :(得分:0)
.populate({ path: 'userId', model: 'users', select:'id name address' })