簡體   English   中英

如何在 MongoDB 中找到特定的子文檔?

[英]How to find a particular sub-document in MongoDB?

該線程指出,在 MongoDB 的子文檔中創建_id不是一個好主意。
子文檔數組的 Mongo _id

我在一個集合中有位置和他們的評論:

那么,找到唯一子文檔的方法是什么?
什么可以設置為review子文檔的主鍵?

var mongoose = require('mongoose')

var openingClosingTimeSchema = new mongoose.Schema(
                             {
                                  days:    {type: String, required: true},
                                  opening: String,
                                  closing: String,
                                  closed:  {type: String, required: true}
                             }
                        )

var reviewSchema = new mongoose.Schema(
                    {
                       author:  String,
                       rating:  {type: Number, required: true, min: 0, max: 5},
                       reviewText:  String,
                       createdOn:   {type: Date, default: Date.now}
                    }
                      )


var locationSchema = new mongoose.Schema(
                       {
                        // 'required' keyword is for validation.
                        name:       {type: String, required: true},
                        address:    String,

                        // 'default' keyword can be with or without quotes.
                        // When defining multiple properties for a field, {} are required.
                        rating:     {type: Number, default: 0, min: 0, max: 5},
                        facilities:     [String],

                        // Nest 'openingClosingTimeSchema' under 'locationSchema'.
                        openingTimes:   [openingClosingTimeSchema],

                        // Nest 'reviewSchema' under 'locationSchema'.
                        reviews:    [reviewSchema]
                       }
                    )

在 MongoDB 的子文檔中創建 _id 不是一個好主意

這不是一個普遍適用的指南。

如果您需要識別數組中的子文檔,_id 字段會很有幫助(或任何其他可以提供相同功能的字段)。

如果您不需要標識子文檔,則不需要標識字段。

由於您屬於第一類,因此在您的用例中有一個 _id 字段是完全可以的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM