我有一个在Mongo中工作正常的查询,但是我在查询在Mongoose中工作时遇到了问题。
当我尝试删除包含特定嵌套属性的文档时。继承人使用股票Mongo进行查询。
db.cats.remove({ 'myProp.some.nested': { $exists:true }})
我在Mongoose中尝试了以下内容(仅使用网站上的示例在节点repl中)。
var mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1:27017/mydb")
var Cat = mongoose.model('Cat', { name: String, myProp:{} });
var kitty = new Cat({ name: 'Zildjian', myProp:{ some:{ nested:'prop' } } });
kitty.save();
Cat.where('myProp.some.nested').exists().remove(console.log)
> [Error: key myProp.some.nested must not contain '.'] null
Cat.find({'myProp.some.nested':{ $exists:true } }).remove(console.log)
> [Error: key myProp.some.nested must not contain '.'] null
Cat.remove({'myProp.some.nested':{ $exists:true } }).exec(console.log)
> [Error: key myProp.some.nested must not contain '.']
取景器按预期工作。
Cat.find({'myProp.some.nested':{ $exists:true } }).exec(console.log)
{ domain: null,
_events: { err: [Function], complete: [Function] },
_maxListeners: 10,
emitted: {},
ended: false }
> null [ { _id: 53d6e1a8c5828df27ae23091,
name: 'Zildjian',
myProp: { some: { nested: 'prop' } },
__v: 0 } ]