Ze *_*ibe 7 json mongoose mongodb node.js
我有以下架构:
var Child = new mongoose.Schema({
'field': String,
'value': String
});
var Parent = new mongoose.Schema({
'name': String,
'children': [ Child ]
});
Run Code Online (Sandbox Code Playgroud)
我想返回Parent
其中一个Child
对应于以下JSON对象的:
{ 'field': 'Family Name', 'value': 'Smith' }
Run Code Online (Sandbox Code Playgroud)
我试过这个:
Parent.findOne({ 'children': { 'field': 'Family Name', 'value': 'Smith' } }, fn ...)
Run Code Online (Sandbox Code Playgroud)
但它一直在检索null
.
编辑:
通过Mongo shell扩展测试,我发现Child
子文档有自己_id
的.如果我将其添加_id
到查询中,它将获取parent
文档.现在,我事先并不知道那个孩子id
会是什么.那么:如何从子文档查询中删除它?(换句话说,上面的查询字面上查找只有两个属性的JSON对象,而子文档有三个)
我的环境是:Node.js,Mongoose,MongoDB
Ze *_*ibe 10
似乎$elemMatch
是查询运算符来解决这个问题.实际查询应写成如下:
Parent.findOne({ 'children': { $elemMatch: { 'field': 'Family Name', 'value': 'Smith' } } }, fn ...)
Run Code Online (Sandbox Code Playgroud)
您是否有理由在子文档上使用字段、值结构?简单地将键用作字段会更容易,例如{"FamilyName": "Smith"}
. 这将允许类似:
Parent.findOne({'children.FamilyName': 'Smith'}, function(err, doc){...});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8317 次 |
最近记录: |