Arrays 如何正确插入包含其他对象的对象的文档

Arrays 如何正确插入包含其他对象的对象的文档,arrays,json,mongodb,object,Arrays,Json,Mongodb,Object,在mongodb中,我想知道如何使用包含对象的对象从命令行向db正确插入json db.burgers.insert( [ {'burger': { 'patty': 'beef', 'cheese': false, 'toppings': [ 'ketchup', 'onions', 'pickles' ] }} ] )

在mongodb中,我想知道如何使用包含对象的对象从命令行向db正确插入json

db.burgers.insert(
    [
        {'burger': {
            'patty': 'beef',
            'cheese': false,
            'toppings': [
                'ketchup', 'onions', 'pickles'
            ]
        }}
    ]
)
当我尝试上面的代码时,
db.burgers.burger.find()
返回
0
,而我希望它返回
1

以下是它们如何返回的

db.burgers.find().pretty()
{
    "_id" : ObjectId("5f87b58afd426d861d55b5ff"),
    "burger" : {
        "patty" : "beef",
        "cheese" : false,
        "toppings" : [
            "ketchup",
            "onions",
            "pickles"
        ]
    }
}

MongoDB不是这样工作的。您无法通过这种方式访问集合中的文档,必须使用该方法并通过所需的筛选器

将集合视为一个表,文档视为一行(实际上并非如此,但这种抽象可以使其更易于理解)。插入包含属性
burguer
的文档时,这并不意味着集合汉堡将包含属性
burguer
,而是包含具有此属性的文档

我建议您阅读MongoDB官方文档

在mongodb中,我想知道如何正确地将json插入数据库 从包含对象的对象的命令行

db.burgers.insert(
    [
        {'burger': {
            'patty': 'beef',
            'cheese': false,
            'toppings': [
                'ketchup', 'onions', 'pickles'
            ]
        }}
    ]
)
将文档插入到集合中是正确的。您可以使用
insertOne
insertMany
insert
方法插入文档。
insertOne
专门用于一次插入一个文档
insert
insertMany
可用于一次插入一个或多个文档

从命令行,
mongo
shell:

> var doc =  { 'burger': {
                       'patty': 'beef',
                       'cheese': false,
                       'toppings': [ 'ketchup', 'onions', 'pickles' ] 
             } }

> db.burgers.insertOne(doc)
{
        "acknowledged" : true,
        "insertedId" : ObjectId("5f87f68dd039d5cb61ae2251")
}
注意,
\u id
字段是由MongoDB创建的

您可以使用
insertMany
插入许多文档—一组JSON文档。比如说,

var docs_array = [ {... }, {... }, ... ]
db.burgers.insertMany(docs_array)

当我尝试上面的代码时,db.burgers.burger.find()返回0,当我 我希望它能返回1

您可以使用
find
findOne
方法查询文档。
find
返回一个光标(包含多个文档),而
findOne
始终返回一个文档(如果未找到文档,则返回一个
null
)。例如:

> db.burgers.findOne()
> db.burgers.findOne( { _id: ObjectId("5f87f68dd039d5cb61ae2251") } )
上面的查询返回上面新插入的文档

我认为您的查询
db.burgers.burger.find()
不正确。如果只希望打印
burger
字段(这是一个嵌套文档),请使用投影,如下所示:

> db.burgers.findOne( {}, { burger: 1, _id: 0 } )
{
        "burger" : {
                "patty" : "beef",
                "cheese" : false,
                "toppings" : [
                        "ketchup",
                        "onions",
                        "pickles"
                ]
        }
}
注:投影只允许输出特定字段,不允许输出其他字段。在上面的查询中,
\u id
字段被排除

如果要计算集合中的文档数,请使用以下方法:

> db.burgers.countDocuments({})

参考资料: