mongodb - MongoDB 中的 "Find() inside Insert"?

标签 mongodb mongodb-query

亲们, 我有一个名为“动物”的集合,示例文档 -

{
    "_id" : ObjectId("57321290c46ff86ce9e00b35"),
    "parent_id" : null,
    "author" : "xxx@hotmail.com",
    "name" : "Mammal",
    "status" : "active",
    "sub_species" : [ 
        "Dog", 
        "Cat", 
        "Cow"
    ]
}

{
    "_id" : ObjectId("57321c10c46ff86ce9e00b36"),
    "author" : "xxx@hotmail.com",
    "name" : "Dog",
    "status" : "active",
    "parent_id" : "57321290c46ff86ce9e00b35"
}

我的问题是 - 如何在 mongo shell 中编写插入语句以编程方式生成“parent-id”(如果它已经存在)?我希望能够写出这样的东西 -

db.animals.insert( {
    "author" : "xxx@hotmail.com",
    "name" : "Dog",
    "status" : "active",
    "parent_id" : {db.animals.find( { name: { $eq: 'Mammal' } } )}
} )

提前致谢

最佳答案

这是不可能的,因为 mongo shell 只是 MongoDB 服务器的交互式 JS 接口(interface),因此您需要在执行插入之前单独查询父 ID;您不能在插入文档中包含查询操作。

下面的例子演示了这一点:

var parent_id = db.animals.findOne({ name: 'Mammal' })._id;
var insertDoc = {
    "author" : "xxx@hotmail.com",
    "name" : "Dog",
    "status" : "active",
    "parent_id" : parent_id
};
db.animals.insert(insertDoc);

关于mongodb - MongoDB 中的 "Find() inside Insert"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378672/

相关文章:

php - 使用 Doctrine ODM 从 mongodb 文档中的数组中删除项目

c# - 未找到 MongoDB C# 驱动程序方法 MongoDB.Bson.Serialization.BsonSerializationInfo ByRef

java - MongoCursorNotFoundException - 查询失败,错误代码 -5

node.js - 使用 $redact 过滤多个数组

node.js - 如果通过Mongoose在Mongodb中的另一个文档中存在引用,有什么更好的方法来防止文档被删除?

python - pymongo 和 $ne : null 的语法错误

ruby-on-rails - 使用常规持久性方法通过 mongoid 更新 Rails 模型的属性

mongodb - 查询以将文档的交集与字段集体匹配

mongodb - 如何创建 View 以从 mongoDB 中的两个集合中读取?

python - Django MongoDB 迁移警告